Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/main/java/com/nextcloud/common/NextcloudClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,9 @@ class NextcloudClient(var baseUri: Uri, val context: Context) : OkHttpClient() {
destination = redirectedDestination

if (getRequestHeader("Destination").isNullOrEmpty()) {
method.requestHeaders.put("destination", destination)
method.addRequestHeader("destination", destination)
} else {
method.requestHeaders.put("Destination", destination)
method.addRequestHeader("Destination", destination)
}
}
status = method.execute(this)
Expand Down
47 changes: 36 additions & 11 deletions src/main/java/com/nextcloud/common/OkHttpMethodBase.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,14 @@ import okhttp3.Response
*/
abstract class OkHttpMethodBase(var uri: String,
val useOcsApiRequestHeader: Boolean) {
lateinit var response: Response
var queryMap: Map<String, String> = HashMap()
var requestHeaders: MutableMap<String, String> = HashMap()
var requestBuilder: Request.Builder = Request.Builder()
companion object {
const val UNKOWN_STATUS_CODE: Int = -1;
}

private var response: Response? = null
private var queryMap: Map<String, String> = HashMap()
private val requestHeaders: MutableMap<String, String> = HashMap()
private val requestBuilder: Request.Builder = Request.Builder()

fun OkHttpMethodBase() {
requestHeaders.put("http.protocol.single-cookie-header", "true")
Expand All @@ -56,32 +60,53 @@ abstract class OkHttpMethodBase(var uri: String,
return httpBuilder.build()
}

/**
* Set request headers completely replacing existing headers.
* To clear request headers, call this method with empty list.
*
* @param headers List of header-value pairs
*/
fun setRequestHeaders(vararg headers: Pair<String, String>) {
requestHeaders.clear()
requestHeaders.putAll(headers)
}

/**
* Adds request header, overwriting any existing value.
*
* @param header HTTP request header name
* @param value HTTP request header value
*/
fun addRequestHeader(header: String, value: String) {
requestHeaders.put(header, value)
}

fun setQueryString(params: Map<String, String>) {
queryMap = params
}

fun getResponseBodyAsString(): String {
return response.body()?.string() ?: ""
return response?.body()?.string() ?: ""
}

fun releaseConnection() {
response.body()?.close()
response?.body()?.close()
}

fun getStatusCode(): Int {
return response.code()
return response?.code() ?: UNKOWN_STATUS_CODE
}

fun getStatusText(): String {
return response.message()
return response?.message() ?: ""
}

fun getResponseHeaders(): Headers {
return response.headers()
return response?.headers() ?: Headers.Builder().build()
}

fun getResponseHeader(name: String): String? {
return response.header(name)
return response?.header(name)
}

fun execute(nextcloudClient: NextcloudClient): Int {
Expand All @@ -103,7 +128,7 @@ abstract class OkHttpMethodBase(var uri: String,
if (nextcloudClient.followRedirects) {
return nextcloudClient.followRedirection(this).getLastStatus()
} else {
return response.code()
return response?.code() ?: UNKOWN_STATUS_CODE
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,7 @@ public RemoteOperationResult run(NextcloudClient client) {

status = client.execute(get);
String response = get.getResponseBodyAsString();

String nextPageHeader = get.response.header("X-Activity-Last-Given");
String nextPageHeader = get.getResponseHeader("X-Activity-Last-Given");
if (nextPageHeader != null) {
lastGiven = Integer.parseInt(nextPageHeader);
} else {
Expand Down