package com.ym.library.down

import com.ym.library.MyConstant
import com.ym.library.net.IUserApi
import com.ym.library.utils.LogUtils
import com.ym.modulecommon.utils.AdPreference
import okhttp3.Interceptor
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.converter.gson.GsonConverterFactory
import java.util.concurrent.TimeUnit

/**
 * Created by gaoleichao on 2018/5/2.
 */
object VersionClient {

    private val logInterceptor = HttpLoggingInterceptor()
    private val paramsInterceptor = Interceptor { chain ->
        val request = chain.request()
//        val builder = request.url().newBuilder()
//        if (request.url().host().toString().contains("zhangxinhulian.com")) {
        val builder = request.url().newBuilder()
        com.ym.modulecommon.utils.PhoneUtils.addParam(request, builder)
        chain.proceed(request.newBuilder().url(builder.build()).build())
//        } else {
//            chain.proceed(request.newBuilder().build())
//        }
//        chain.proceed(request.newBuilder().url(builder.build()).build())
    }

    private val headInterceptor = Interceptor { chain ->
        val request = chain.request()
        val builder = request.newBuilder()
//        if (!TextUtils.isEmpty(SettingPreference.getUserAgent())) {
//            builder.addHeader("web-user-agent", SettingPreference.getUserAgent())
//            builder.removeHeader("User-Agent")
//            builder.addHeader("User-Agent", SettingPreference.getUserAgent())
//        }
//        if (request.url().host().toString().contains("zhangxinhulian.com")) {
        builder.addHeader(MyConstant.aid, AdPreference.getAndroidId())

        LogUtils.e(AdPreference.getAndroidId())
//        }
        chain.proceed(builder.build())
    }

    private val httpClient = okhttp3.OkHttpClient.Builder()
        .connectTimeout(10000, TimeUnit.MILLISECONDS)
        .readTimeout(10000, TimeUnit.MILLISECONDS)
        .addInterceptor(logInterceptor.apply {
            level = HttpLoggingInterceptor.Level.BODY
        })
        .hostnameVerifier { hostname, session ->
            true
        }
        .addInterceptor(paramsInterceptor)
        .addInterceptor(headInterceptor)
        .build()!!

    private val retrofit = retrofit2.Retrofit.Builder()
        .client(httpClient)
        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
        .addConverterFactory(GsonConverterFactory.create())
        .baseUrl(com.ym.modulecommon.net.NetConfig.BASE_FEED_URL)
        .build()
    val userApi by lazy { retrofit.create(IUserApi::class.java) }


//    val videoInfoApi by lazy { retrofit.create(IVideoInfoApi::class.java) }
//    val userInfoAPi by lazy { retrofit.create(IUserInfoApi::class.java) }
//    val cfgInfoAPi by lazy { retrofit.create(ICfgInfoApi::class.java) }
//    val starInfoAPi by lazy { retrofit.create(IStarInfoApi::class.java) }
}