diff --git a/app/src/main/java/com/futo/polycentric/core/ApiMethods.kt b/app/src/main/java/com/futo/polycentric/core/ApiMethods.kt index 5cff890a5b6d7864f0ce23b8eb2bb38243f5c230..9b3b50d560a15bc64040378335994fe11ebd0b1f 100644 --- a/app/src/main/java/com/futo/polycentric/core/ApiMethods.kt +++ b/app/src/main/java/com/futo/polycentric/core/ApiMethods.kt @@ -16,17 +16,34 @@ import userpackage.Protocol import java.nio.ByteBuffer import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException +import okhttp3.Cache +import java.io.File +import java.util.concurrent.TimeUnit class ApiMethods { companion object { var UserAgent = "Grayjay Android"; private const val TAG = "ApiMethods" - private val client = OkHttpClient() + private var client: OkHttpClient = OkHttpClient.Builder() + .connectTimeout(3, TimeUnit.SECONDS) + .build() + + fun initCache(cacheDir: File) { + client = OkHttpClient.Builder() + .connectTimeout(3, TimeUnit.SECONDS) + .cache(Cache( + directory = File(cacheDir, "http_cache"), + maxSize = 25L * 1024L * 1024L // 25 MiB + )) + .build() + } + private val MEDIA_TYPE_OCTET_STREAM = "application/octet-stream".toMediaType() fun getRequestBuilder(url: String): Request.Builder = Request.Builder().url(url).header("x-polycentric-user-agent", UserAgent) + suspend fun postEvents(server: String, events: Protocol.Events): Unit = withContext(Dispatchers.IO) { val body = events.toByteArray().toRequestBody(MEDIA_TYPE_OCTET_STREAM) val request = getRequestBuilder("$server/events").post(body).build()