mirror of
https://github.com/hmalik144/LiveTemplatesDictionary.git
synced 2025-12-10 03:05:28 +00:00
Create retrofitclass
This commit is contained in:
71
retrofitclass
Normal file
71
retrofitclass
Normal file
@@ -0,0 +1,71 @@
|
||||
// TODO: add dependencies
|
||||
//implementation 'com.squareup.retrofit2:retrofit:2.8.1'
|
||||
//implementation 'com.squareup.retrofit2:converter-gson:2.8.1'
|
||||
|
||||
// $APICLASSNAME$ -> fileNameWithoutExtension()
|
||||
|
||||
interface $APICLASSNAME$ {
|
||||
|
||||
@retrofit2.http.GET("path?")
|
||||
suspend fun getFromApi(@retrofit2.http.Query("query") query: String): retrofit2.Response<ApiResponse>
|
||||
|
||||
// invoke method creating an invocation of the api call
|
||||
companion object{
|
||||
operator fun invoke(
|
||||
// injected @params
|
||||
networkConnectionInterceptor: NetworkConnectionInterceptor
|
||||
) : $APICLASSNAME$ {
|
||||
|
||||
// TODO: Change me
|
||||
val baseUrl = "$BASEURL$"
|
||||
|
||||
// okHttpClient with interceptors
|
||||
val okkHttpclient = okhttp3.OkHttpClient.Builder()
|
||||
.addNetworkInterceptor(networkConnectionInterceptor)
|
||||
.build()
|
||||
|
||||
// creation of retrofit class
|
||||
return retrofit2.Retrofit.Builder()
|
||||
.client(okkHttpclient)
|
||||
.baseUrl(baseUrl)
|
||||
.addConverterFactory(retrofit2.converter.gson.GsonConverterFactory.create())
|
||||
.build()
|
||||
.create($APICLASSNAME$::class.java)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class ApiResponse(
|
||||
val res: Map<String, Any>
|
||||
)
|
||||
|
||||
class NetworkConnectionInterceptor(
|
||||
context: android.content.Context
|
||||
) : okhttp3.Interceptor {
|
||||
|
||||
private val applicationContext = context.applicationContext
|
||||
|
||||
override fun intercept(chain: okhttp3.Interceptor.Chain): okhttp3.Response {
|
||||
if (!isInternetAvailable()){
|
||||
throw java.io.IOException("Make sure you have an active data connection")
|
||||
}
|
||||
return chain.proceed(chain.request())
|
||||
}
|
||||
|
||||
private fun isInternetAvailable(): Boolean {
|
||||
var result = false
|
||||
val connectivityManager =
|
||||
applicationContext.getSystemService(android.content.Context.CONNECTIVITY_SERVICE) as android.net.ConnectivityManager?
|
||||
connectivityManager?.let {
|
||||
it.getNetworkCapabilities(connectivityManager.activeNetwork)?.apply {
|
||||
result = when {
|
||||
hasTransport(android.net.NetworkCapabilities.TRANSPORT_WIFI) -> true
|
||||
hasTransport(android.net.NetworkCapabilities.TRANSPORT_CELLULAR) -> true
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user