package com.igo.user.network
|
|
import android.util.Log
|
import cn.sinata.xldutils.utils.SPUtils
|
import com.igo.user.utils.Const
|
import okhttp3.FormBody
|
import okhttp3.OkHttpClient
|
import okhttp3.logging.HttpLoggingInterceptor
|
import retrofit2.Retrofit
|
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
|
|
/**
|
* 网络请求retrofit初始化。
|
*/
|
class RRetrofit private constructor() {
|
|
private val retrofit: Retrofit = Retrofit.Builder()
|
.baseUrl(Apis.BASE_URL)
|
.addConverterFactory(JsonConverterFactory.create())
|
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
|
.client(OkHttpClient.Builder()
|
.addInterceptor(HttpLoggingInterceptor().apply {
|
level = HttpLoggingInterceptor.Level.BODY
|
})
|
.addInterceptor { chain ->
|
//1=简体中文,2=英语,3=印尼语
|
val language = SPUtils.instance().getString("language", "en")
|
var request = chain.request()
|
if (request.method() == "POST"&&!request.url().toString().contains("base/user/image")) {
|
val bodyBuilder = FormBody.Builder()
|
var formBody:FormBody
|
if (request.body() is FormBody) {
|
formBody = request.body() as FormBody
|
(0 until formBody.size()).forEach {
|
bodyBuilder.addEncoded(
|
formBody.encodedName(it), formBody.encodedValue(
|
it
|
)
|
)
|
}
|
}
|
formBody = bodyBuilder.addEncoded(
|
"language", when (language) {
|
"ch" -> "1"
|
"fr" -> "3"
|
else -> "2"
|
}
|
).build()
|
request = request.newBuilder().post(formBody).build()
|
}
|
chain.proceed(request)
|
}
|
.addInterceptor { chain ->
|
val token = SPUtils.instance().getString(Const.User.TOKEN)
|
val request =
|
if (token.isEmpty()) chain.request() else
|
chain.request().newBuilder().addHeader("Authorization", "Bearer $token").build()
|
Log.e(Const.Tag,request.headers().toString())
|
chain.proceed(request)
|
}
|
.build())
|
.build()
|
|
companion object {
|
fun instance() = RRetrofit()
|
}
|
|
fun <T> create(clazz: Class<T>): T = retrofit.create(clazz)
|
}
|