<lambda>null1 package expo.modules.devlauncher.helpers
2 
3 import android.net.Uri
4 import kotlinx.coroutines.suspendCancellableCoroutine
5 import okhttp3.Call
6 import okhttp3.Callback
7 import okhttp3.Headers
8 import okhttp3.OkHttpClient
9 import okhttp3.Request
10 import okhttp3.RequestBody
11 import okhttp3.Response
12 import java.io.IOException
13 import kotlin.coroutines.resume
14 import kotlin.coroutines.resumeWithException
15 
16 /**
17  * An extension which converts the OkHttp requests to coroutines.
18  */
19 suspend inline fun Request.await(okHttpClient: OkHttpClient): Response {
20   return suspendCancellableCoroutine { callback ->
21     okHttpClient.newCall(this).enqueue(object : Callback {
22       override fun onResponse(call: Call, response: Response) {
23         callback.resume(response)
24       }
25 
26       override fun onFailure(call: Call, e: IOException) {
27         if (callback.isCancelled) {
28           return
29         }
30         callback.resumeWithException(e)
31       }
32     })
33   }
34 }
35 
fetchnull36 fun fetch(url: Uri, method: String, headers: Headers): Request =
37   Request.Builder().method(method, null).url(url.toString()).headers(headers).build()
38 
39 fun post(url: Uri, requestBody: RequestBody, vararg headers: Pair<String, String>): Request =
40   Request
41     .Builder()
42     .method("POST", requestBody)
43     .url(url.toString())
44     .apply {
45       headers.forEach {
46         addHeader(it.first, it.second)
47       }
48     }
49     .build()
50