package org.telegram.network;


import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;

import org.telegram.network.log.LogInterceptor;

import java.util.concurrent.TimeUnit;

import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * Retrofit
 */
public class RetrofitClient {


    private static Retrofit sRetrofit;

    private RetrofitClient() {
        OkHttpClient.Builder client = new OkHttpClient.Builder()
                .connectTimeout(10, TimeUnit.SECONDS)//设置超时时间
                .retryOnConnectionFailure(true)
//                .addInterceptor(HeadInterceptor.getDefaultFixedHeaderInterceptor())//设置头部信息
//                .addInterceptor(new BodyInterceptor())//添加统一的 body 和签名
                .addInterceptor(LogInterceptor.getLogInterceptor())//打印 log
                ;

        sRetrofit = new Retrofit.Builder()
                .client(client.build())
                .baseUrl(UrlConfig.getInstance().BASE_URL)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
//                .addConverterFactory(ErrorCodeConverterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }

    private static class SingleInstance {
        static RetrofitClient sApiClient = new RetrofitClient();
    }

    public static RetrofitClient getInstance() {
        return SingleInstance.sApiClient;
    }

    public <T> T request(Class<T> tClass) {
        return sRetrofit.create(tClass);
    }
}
