<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