45 lines
1.4 KiB
Kotlin
Raw Normal View History

2023-02-06 13:44:27 -06:00
package com.isolaatti.connectivity
2023-11-25 22:10:35 -06:00
import com.google.gson.GsonBuilder
2023-07-15 20:58:57 -06:00
import com.isolaatti.BuildConfig
2023-11-25 22:10:35 -06:00
import com.isolaatti.type_adapters.LocalDateTimeAdapter
2023-02-06 13:44:27 -06:00
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
2023-11-25 22:10:35 -06:00
import java.time.ZonedDateTime
2023-12-21 21:46:11 -06:00
import java.util.concurrent.TimeUnit
2023-02-06 13:44:27 -06:00
import javax.inject.Inject
2023-02-11 23:41:23 -06:00
class RetrofitClient @Inject constructor(private val authenticationInterceptor: AuthenticationInterceptor) {
2023-02-06 13:44:27 -06:00
2023-02-11 23:41:23 -06:00
companion object {
// These urls don't need auth header
val excludedUrlsFromAuthentication = listOf(
2023-11-11 16:58:44 -06:00
"/api/LogIn",
"/api/signUp/get_code",
"/api/signUp/validate_code",
"/api/signUp/sign_up_with_code"
2023-02-11 23:41:23 -06:00
)
2023-07-15 20:58:57 -06:00
const val BASE_URL = "${BuildConfig.backend}/api/"
2023-02-06 13:44:27 -06:00
}
private val okHttpClient get() = OkHttpClient.Builder()
2023-02-11 23:41:23 -06:00
.addInterceptor(authenticationInterceptor)
2023-12-21 21:46:11 -06:00
.connectTimeout(5, TimeUnit.MINUTES)
.writeTimeout(5, TimeUnit.MINUTES)
.readTimeout(5, TimeUnit.MINUTES)
2023-02-06 13:44:27 -06:00
.build()
2023-11-25 22:10:35 -06:00
private val gson = GsonBuilder()
.registerTypeAdapter(ZonedDateTime::class.java, LocalDateTimeAdapter())
.create()
2023-02-06 13:44:27 -06:00
val client: Retrofit get() = Retrofit.Builder()
2023-02-11 23:41:23 -06:00
.baseUrl(BASE_URL)
2023-02-06 13:44:27 -06:00
.client(okHttpClient)
2023-11-25 22:10:35 -06:00
.addConverterFactory(GsonConverterFactory.create(gson))
2023-02-06 13:44:27 -06:00
.build()
}