Skip to content

Instantly share code, notes, and snippets.

@c4software
Created October 18, 2020 14:26
Show Gist options
  • Select an option

  • Save c4software/b3eb79cc5649d12e497dbf6d35649dcd to your computer and use it in GitHub Desktop.

Select an option

Save c4software/b3eb79cc5649d12e497dbf6d35649dcd to your computer and use it in GitHub Desktop.
/**
* ApiService
*/
interface ApiService {
@GET("/status")
suspend fun readStatus(@Query("identifier") identifier: String): LedStatus
@POST("/status")
suspend fun writeStatus(@Body status: LedStatus): LedStatus
companion object {
/**
* Création d'un singleton pour la simplicité, mais normalement nous utilisons plutôt un
* injecteur de dépendances.
*/
val instance = build()
/**
* Création de l'objet qui nous permettra de faire les appels d'API
*/
private fun build(): ApiService {
val gson = GsonBuilder().create() // JSON deserializer/serializer
// Create the OkHttp Instance
val okHttpClient = OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.addInterceptor(HttpLoggingInterceptor().setLevel(if (BuildConfig.DEBUG) HttpLoggingInterceptor.Level.BODY else HttpLoggingInterceptor.Level.NONE))
.addInterceptor(Interceptor { chain: Interceptor.Chain ->
val request = chain.request().newBuilder().addHeader("Accept", "application/json").build()
chain.proceed(request)
})
.build()
return Retrofit.Builder()
.baseUrl(BuildConfig.URI_REMOTE_SERVER)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
.create(ApiService::class.java)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment