diff --git a/packages/patrol/android/src/main/kotlin/pl/leancode/patrol/contracts/PatrolAppServiceClient.kt b/packages/patrol/android/src/main/kotlin/pl/leancode/patrol/contracts/PatrolAppServiceClient.kt index 4f2393868..5f39bd12e 100644 --- a/packages/patrol/android/src/main/kotlin/pl/leancode/patrol/contracts/PatrolAppServiceClient.kt +++ b/packages/patrol/android/src/main/kotlin/pl/leancode/patrol/contracts/PatrolAppServiceClient.kt @@ -5,7 +5,6 @@ package pl.leancode.patrol.contracts; - import com.squareup.okhttp.MediaType import com.squareup.okhttp.OkHttpClient import com.squareup.okhttp.Request @@ -14,7 +13,6 @@ import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import java.util.concurrent.TimeUnit - class PatrolAppServiceClient(address: String, port: Int, private val timeout: Long, private val timeUnit: TimeUnit) { fun listDartTests(): Contracts.ListDartTestsResponse { @@ -34,7 +32,6 @@ class PatrolAppServiceClient(address: String, port: Int, private val timeout: Lo setConnectTimeout(timeout, timeUnit) setReadTimeout(timeout, timeUnit) setWriteTimeout(timeout, timeUnit) - // setCallTimeout(timeout, timeUnit) // not available in OkHttp 2 } val request = Request.Builder() diff --git a/packages/patrol_gen/lib/src/generators/android/android_http4k_client_generator.dart b/packages/patrol_gen/lib/src/generators/android/android_http4k_client_generator.dart index 0773c0daa..2ecf09a90 100644 --- a/packages/patrol_gen/lib/src/generators/android/android_http4k_client_generator.dart +++ b/packages/patrol_gen/lib/src/generators/android/android_http4k_client_generator.dart @@ -25,15 +25,13 @@ class AndroidHttp4kClientGenerator { package ${config.package}; +import com.squareup.okhttp.MediaType +import com.squareup.okhttp.OkHttpClient +import com.squareup.okhttp.Request +import com.squareup.okhttp.RequestBody import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json -import org.apache.hc.client5.http.config.RequestConfig -import org.apache.hc.client5.http.impl.classic.HttpClients -import org.apache.hc.core5.util.Timeout -import org.http4k.client.ApacheClient -import org.http4k.core.Method -import org.http4k.core.Request -import org.http4k.core.Status +import java.util.concurrent.TimeUnit '''; } @@ -42,42 +40,46 @@ import org.http4k.core.Status const url = r'"http://$address:$port/"'; final endpoints = service.endpoints.map(_createEndpoint).join('\n\n'); const throwException = - r'throw PatrolAppServiceClientException("Invalid response ${response.status}, ${response.bodyString()}")'; + r'throw PatrolAppServiceClientException("Invalid response ${response.code()}, ${response?.body()?.string()}")'; const urlWithPath = r'"$serverUrl$path"'; return ''' -class ${service.name}Client(private val address: String, private val port: Int, private val timeout: Timeout) { +class ${service.name}Client(address: String, port: Int, private val timeout: Long, private val timeUnit: TimeUnit) { $endpoints private fun performRequest(path: String, requestBody: String? = null): String { - var request = Request(Method.POST, $urlWithPath) - if (requestBody != null) { - request = request.body(requestBody) + val endpoint = $urlWithPath + + val client = OkHttpClient().apply { + setConnectTimeout(timeout, timeUnit) + setReadTimeout(timeout, timeUnit) + setWriteTimeout(timeout, timeUnit) } - val client = ApacheClient( - HttpClients.custom().setDefaultRequestConfig( - RequestConfig - .copy(RequestConfig.DEFAULT) - .setResponseTimeout(timeout) - .setConnectionRequestTimeout(timeout) - .build() - ).build()) - - val response = client(request) - - if (response.status != Status.OK) { + val request = Request.Builder() + .url(endpoint) + .also { + if (requestBody != null) { + it.post(RequestBody.create(jsonMediaType, requestBody)) + } + } + .build() + + val response = client.newCall(request).execute() + if (response.code() != 200) { $throwException } - return response.bodyString() + return response.body().string() } val serverUrl = $url private val json = Json { ignoreUnknownKeys = true } + + private val jsonMediaType = MediaType.parse("application/json; charset=utf-8") }'''; } @@ -100,7 +102,7 @@ $endpoints return performRequest("${endpoint.name}"$serializeParameter)'''; return ''' - fun ${endpoint.name}($parameterDef) $returnDef { + fun ${endpoint.name}($parameterDef)$returnDef { $body }'''; }