You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.1 KiB
80 lines
2.1 KiB
package net.pokeranalytics.android.api
|
|
|
|
import android.content.Context
|
|
import net.pokeranalytics.android.BuildConfig
|
|
import net.pokeranalytics.android.R
|
|
import net.pokeranalytics.android.model.retrofit.CurrencyConverterValue
|
|
import net.pokeranalytics.android.util.URL
|
|
import okhttp3.Interceptor
|
|
import okhttp3.OkHttpClient
|
|
import okhttp3.logging.HttpLoggingInterceptor
|
|
import retrofit2.Call
|
|
import retrofit2.Retrofit
|
|
import retrofit2.converter.gson.GsonConverterFactory
|
|
import retrofit2.http.GET
|
|
import retrofit2.http.Query
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
/**
|
|
* CurrencyCode Converter API
|
|
*/
|
|
interface CurrencyConverterApi {
|
|
|
|
companion object {
|
|
|
|
private var currencyConverterApi: CurrencyConverterApi? = null
|
|
|
|
fun getApi(context: Context): CurrencyConverterApi? {
|
|
|
|
if (currencyConverterApi == null) {
|
|
|
|
var serviceEndpoint = URL.API_CURRENCY_CONVERTER
|
|
|
|
val httpClient = OkHttpClient.Builder()
|
|
|
|
// Logging interceptor
|
|
if (BuildConfig.DEBUG) {
|
|
val interceptor = HttpLoggingInterceptor()
|
|
interceptor.level = HttpLoggingInterceptor.Level.BASIC
|
|
httpClient.addInterceptor(interceptor)
|
|
}
|
|
|
|
// Add headers
|
|
val interceptor = Interceptor { chain ->
|
|
val original = chain.request()
|
|
val originalHttpUrl = original.url()
|
|
|
|
val url = originalHttpUrl.newBuilder()
|
|
.addQueryParameter("apiKey", context.getString(R.string.currency_converter_api))
|
|
.build()
|
|
|
|
val requestBuilder = original.newBuilder()
|
|
.url(url)
|
|
|
|
chain.proceed(requestBuilder.build())
|
|
}
|
|
httpClient.addInterceptor(interceptor)
|
|
|
|
val client = httpClient
|
|
.readTimeout(60, TimeUnit.SECONDS)
|
|
.connectTimeout(60, TimeUnit.SECONDS)
|
|
.build()
|
|
|
|
val retrofit = Retrofit.Builder()
|
|
.addConverterFactory(GsonConverterFactory.create())
|
|
.baseUrl(serviceEndpoint.value)
|
|
.client(client)
|
|
.build()
|
|
|
|
currencyConverterApi = retrofit.create(CurrencyConverterApi::class.java)
|
|
}
|
|
|
|
return currencyConverterApi
|
|
}
|
|
|
|
}
|
|
|
|
@GET("convert")
|
|
fun convert(@Query("q") currencies: String, @Query("compact") compact: String = "y"): Call<Map<String, CurrencyConverterValue>>
|
|
|
|
}
|
|
|