package chat.rocket.android.helper import android.content.Context import chat.rocket.android.RocketChatCache import chat.rocket.android.api.rest.CookieInterceptor import chat.rocket.android.api.rest.DefaultCookieProvider import java.util.concurrent.TimeUnit import okhttp3.OkHttpClient object OkHttpHelper { fun getClientForUploadFile(): OkHttpClient { if (httpClientForUploadFile == null) { httpClientForUploadFile = OkHttpClient.Builder().build() } return httpClientForUploadFile ?: throw AssertionError("httpClientForUploadFile set to null by another thread") } fun getClientForDownloadFile(context: Context): OkHttpClient { if(httpClientForDownloadFile == null) { httpClientForDownloadFile = OkHttpClient.Builder() .addInterceptor(CookieInterceptor(DefaultCookieProvider(RocketChatCache(context)))) .build() } return httpClientForDownloadFile ?: throw AssertionError("httpClientForDownloadFile set to null by another thread") } /** * Returns the OkHttpClient instance for WebSocket connection. * @return The OkHttpClient WebSocket connection instance. */ fun getClientForWebSocket(): OkHttpClient { if (httpClientForWS == null) { httpClientForWS = OkHttpClient.Builder() .readTimeout(0, TimeUnit.NANOSECONDS) .build() } return httpClientForWS ?: throw AssertionError("httpClientForWS set to null by another thread") } private var httpClientForUploadFile: OkHttpClient? = null private var httpClientForDownloadFile: OkHttpClient? = null private var httpClientForWS: OkHttpClient? = null }