From c26590821d68e39a4b19c15ea5851f9f9fb13b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCcahid=20Kambur?= Date: Thu, 3 Feb 2022 20:54:36 +0300 Subject: [PATCH] Create cUrl from response --- http-inspector/src/main/assets/control.html | 3 ++- .../devtools/httpinspector/MockInterceptor.kt | 15 ++++++++++++++- .../httpinspector/internal/RequestQueue.kt | 6 ++++-- .../internal/domain/model/Carrier.kt | 1 + 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/http-inspector/src/main/assets/control.html b/http-inspector/src/main/assets/control.html index dc0bb1f..894179c 100644 --- a/http-inspector/src/main/assets/control.html +++ b/http-inspector/src/main/assets/control.html @@ -152,7 +152,8 @@
Offcanvas right
function getListItem(data) { return '
  • ' + 'Active ' + data["responseData"]["code"] + ' ' - + '' + data["requestData"]["method"] + '' + + '' + data["requestData"]["method"] + ' ' + + 'cURL' + '
    ' + '
    ' + data["requestData"]["url"] + '
    ' + '' + getRequestDate(data) + '' diff --git a/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/MockInterceptor.kt b/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/MockInterceptor.kt index 96c6dd1..b86d95d 100644 --- a/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/MockInterceptor.kt +++ b/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/MockInterceptor.kt @@ -36,6 +36,7 @@ import okhttp3.Interceptor import okhttp3.Protocol import okhttp3.Request import okhttp3.Response +import java.lang.StringBuilder import java.util.Calendar import java.util.concurrent.TimeUnit @@ -131,7 +132,8 @@ class MockInterceptor(context: Context) : Interceptor { body = response.body.readString(), ), requestTimeInMillis = requestTimeInMillis, - responseTimeInMillis = responseTimeInMillis + responseTimeInMillis = responseTimeInMillis, + cURL = request.toCurl() ) // Wait manipulated response from the web client. @@ -163,6 +165,17 @@ class MockInterceptor(context: Context) : Interceptor { .build() } + private fun Request.toCurl(): String { + return StringBuilder().apply { + append("curl -X ${this@toCurl.method}") + this@toCurl.headers.forEach { header -> + append(" -H \"${header.first}: ${header.second}\"") + } + append(" ") + append(this@toCurl.url.toString()) + }.toString() + } + companion object { private const val HEADER_CONTENT_TYPE = "content-type" private const val DEFAULT_RESPONSE_MESSAGE = "" diff --git a/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/internal/RequestQueue.kt b/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/internal/RequestQueue.kt index c372a8a..2578a05 100644 --- a/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/internal/RequestQueue.kt +++ b/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/internal/RequestQueue.kt @@ -28,14 +28,16 @@ internal class RequestQueue { requestData: RequestData, responseData: ResponseData, requestTimeInMillis: Long, - responseTimeInMillis: Long + responseTimeInMillis: Long, + cURL: String ): Carrier { val carrier = Carrier( id.incrementAndGet(), requestData, responseData, requestTimeInMillis, - responseTimeInMillis + responseTimeInMillis, + cURL ) synchronized(queue) { if (queue.isEmpty()) queueChannel.trySend(carrier) diff --git a/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/internal/domain/model/Carrier.kt b/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/internal/domain/model/Carrier.kt index ea90780..629798a 100644 --- a/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/internal/domain/model/Carrier.kt +++ b/http-inspector/src/main/java/com/trendyol/android/devtools/httpinspector/internal/domain/model/Carrier.kt @@ -6,4 +6,5 @@ internal data class Carrier( val responseData: ResponseData, val requestTimeInMillis: Long, val responseTimeInMillis: Long, + val cURL: String )