diff --git a/app/src/main/java/net/pokeranalytics/android/api/CurrencyConverterApi.kt b/app/src/main/java/net/pokeranalytics/android/api/CurrencyConverterApi.kt new file mode 100644 index 00000000..8d84d753 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/api/CurrencyConverterApi.kt @@ -0,0 +1,80 @@ +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 + +/** + * Currency 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> + +} diff --git a/app/src/main/java/net/pokeranalytics/android/model/retrofit/ConvertResult.kt b/app/src/main/java/net/pokeranalytics/android/model/retrofit/ConvertResult.kt new file mode 100644 index 00000000..1520c711 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/model/retrofit/ConvertResult.kt @@ -0,0 +1,11 @@ +package net.pokeranalytics.android.model.retrofit + +import com.google.gson.annotations.SerializedName + +/** + * Currency Converter mapping class + */ +class CurrencyConverterValue { + @SerializedName("val") + var value: Double? = 0.0 +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/util/URL.kt b/app/src/main/java/net/pokeranalytics/android/util/URL.kt index 9e46339c..53bb173a 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/URL.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/URL.kt @@ -16,8 +16,10 @@ enum class URL(var value: String) { FACEBOOK("https://www.facebook.com/171053452998758"), // Support - SUPPORT_EMAIL("support@pokeranalytics.net") + SUPPORT_EMAIL("support@pokeranalytics.net"), + // Currency Converter API + API_CURRENCY_CONVERTER("https://free.currencyconverterapi.com/api/v5/") } diff --git a/app/src/main/res/values/secrets.xml b/app/src/main/res/values/secrets.xml index 77732c57..9510e5b7 100644 --- a/app/src/main/res/values/secrets.xml +++ b/app/src/main/res/values/secrets.xml @@ -1,4 +1,5 @@ AIzaSyCg-vgW4YnFsQ_s1iWjgzSq2vT0te3R1Hw + 5ba8d38995282fe8b1c8 \ No newline at end of file