Last active
August 14, 2019 17:41
-
-
Save BambangHeriSetiawan/cb6a62c2dc308c17f2107bc9546f446f to your computer and use it in GitHub Desktop.
API
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
interface API { | |
@Headers("Accept: application/json", "Content-type: application/json") | |
@GET("discover/movie") | |
fun discoverAsync(@Query("api_key")apiKey:String, | |
@Query("page")page:Int, | |
@Query("year")year:Int | |
): Deferred<ResponseMovies> | |
@Headers("Accept: application/json", "Content-type: application/json") | |
@GET("search/movie") | |
fun searchAsync(@Query("api_key")apiKey:String, | |
@Query("page")page:Int, | |
@Query("year")year:Int, | |
@Query("query")query:String | |
): Deferred<ResponseMovies> | |
/*#########################*/ | |
object Factory { | |
/** | |
* Config GSON | |
* @return | |
*/ | |
private val gson: Gson | |
get() { | |
val gsonBuilder = GsonBuilder() | |
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) | |
return gsonBuilder.create() | |
} | |
fun create(base_url: String): API { | |
return getRetrofitConfig(base_url).create(API::class.java) | |
} | |
private fun getRetrofitConfig(base_url: String): Retrofit { | |
return Retrofit.Builder() | |
.baseUrl(base_url) | |
.addConverterFactory(GsonConverterFactory.create(gson)) | |
.addCallAdapterFactory(CoroutineCallAdapterFactory()) | |
.client(client()) | |
.build() | |
} | |
/** | |
* Config OkhttpClient and interceptions | |
* @return | |
*/ | |
private fun client(): OkHttpClient { | |
return OkHttpClient.Builder() | |
.readTimeout(60, TimeUnit.SECONDS) | |
.connectTimeout(60, TimeUnit.SECONDS) | |
.addInterceptor(levelInterceptor()) | |
.build() | |
} | |
private fun levelInterceptor(): HttpLoggingInterceptor { | |
var loging = HttpLoggingInterceptor() | |
return if (BuildConfig.DEBUG){ | |
loging.setLevel(HttpLoggingInterceptor.Level.BODY) | |
}else { | |
loging.setLevel(HttpLoggingInterceptor.Level.BASIC) | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment