Skip to content

Instantly share code, notes, and snippets.

@ha-yi
Last active June 12, 2017 19:15
Show Gist options
  • Save ha-yi/d8da25699295798e9537f55e031ae253 to your computer and use it in GitHub Desktop.
Save ha-yi/d8da25699295798e9537f55e031ae253 to your computer and use it in GitHub Desktop.
abstract class BaseContactor<T>(val handler:BasePresenter<T>?) {
private val interceptor = HttpLoggingInterceptor()
private val retrofit: Retrofit
private val client: OkHttpClient
protected val api: Api
init {
interceptor.level = HttpLoggingInterceptor.Level.BODY
client = OkHttpClient.Builder().addInterceptor(interceptor).build()
retrofit = Retrofit.Builder()
.baseUrl(Api.BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()
api = retrofit.create(Api::class.java)
}
protected val callback: Callback<T> = object: Callback<T> {
override fun onFailure(call: Call<T>?, t: Throwable?) {
handler?.onError(t?.message)
handler?.showProgress(false)
}
override fun onResponse(call: Call<T>?, response: Response<T>?) {
handler?.showProgress(false)
if (response?.isSuccessful ?:false) {
handler?.onSuccess(response?.body())
} else {
handler?.onError("code:${response?.code()} errorbody:${response?.errorBody()?.string()}")
}
}
}
abstract protected fun prepareCaller(): Call<T>
fun execute() {
handler?.showProgress(true)
val call = prepareCaller()
call.enqueue(callback)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment