package com.doumee.keyCabinet.http; 
 | 
  
 | 
import android.content.Context; 
 | 
  
 | 
import androidx.room.RoomDatabase; 
 | 
  
 | 
import com.doumee.lib_coremodel.config.FrameConfigModule; 
 | 
import com.doumee.lib_coremodel.di.module.ConfigModule; 
 | 
import com.doumee.lib_coremodel.http.InterceptorConfig; 
 | 
import com.doumee.lib_coremodel.http.interceptor.BaseInterceptor; 
 | 
import com.doumee.lib_coremodel.http.interceptor.logging.LoggingInterceptor; 
 | 
import com.doumee.lib_coremodel.http.utils.HttpsUtils; 
 | 
import com.doumee.keyCabinet.BuildConfig; 
 | 
import com.doumee.lib_coremodel.util.SpUtil; 
 | 
import com.google.gson.GsonBuilder; 
 | 
  
 | 
import java.util.HashMap; 
 | 
import java.util.Map; 
 | 
import java.util.concurrent.TimeUnit; 
 | 
  
 | 
import okhttp3.OkHttpClient; 
 | 
import okhttp3.internal.platform.Platform; 
 | 
import retrofit2.Retrofit; 
 | 
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; 
 | 
import retrofit2.converter.gson.GsonConverterFactory; 
 | 
  
 | 
import static com.doumee.lib_coremodel.http.interceptor.logging.Level.BASIC; 
 | 
  
 | 
public class AppConfigModule extends FrameConfigModule { 
 | 
    //超时时间 
 | 
    private static final int DEFAULT_TIMEOUT = 20; 
 | 
    //缓存时间 
 | 
    private static final int CACHE_TIMEOUT = 10 * 1024 * 1024; 
 | 
  
 | 
    @Override 
 | 
    public void applyOptions(Context context, ConfigModule.Builder builder) { 
 | 
        //请求头参数 
 | 
        Map<String, String> headers=new HashMap<>(); 
 | 
        //https单向认证 
 | 
        HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory(); 
 | 
  
 | 
        builder.baseUrl(SpUtil.getString("base_url",Apis.HTTP)); 
 | 
        //builder.baseUrl("http://apis.juhe.cn"); 
 | 
        builder.retrofitOptions(new RetrofitOptions() { 
 | 
                    @Override 
 | 
                    public void applyOptions(Retrofit.Builder builder) { 
 | 
                        builder.addConverterFactory(GsonConverterFactory.create()) 
 | 
                                .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) 
 | 
                                .build(); 
 | 
                    } 
 | 
                }) 
 | 
                .okHttpClientOptions(new OkHttpClientOptions() { 
 | 
                    @Override 
 | 
                    public void applyOptions(OkHttpClient.Builder builder) { 
 | 
                        //.cookieJar(new CookieJarImpl(new PersistentCookieStore(context))) 
 | 
                                //.cache(cache) 
 | 
                        builder.addInterceptor(new BaseInterceptor(headers)) 
 | 
                                //.addInterceptor(new CacheInterceptor(context)) 
 | 
                                //.sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager) 
 | 
                                .addInterceptor(new LoggingInterceptor 
 | 
                                        .Builder()//构建者模式 
 | 
                                        .loggable(BuildConfig.DEBUG) //是否开启日志打印 
 | 
                                        .setLevel(BASIC) //打印的等级 
 | 
                                        .log(Platform.INFO) // 打印类型 
 | 
                                        .request("HTTP==> Request") // request的Tag 
 | 
                                        .response("HTTP==> Response")// Response的Tag 
 | 
                                        //.addHeader("log-header", "I am the log request header.") // 添加打印头, 注意 key 和 value 都不能是中文 
 | 
                                        .build() 
 | 
                                ) 
 | 
                                .connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS) 
 | 
                                .writeTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS) 
 | 
                                //.connectionPool(new ConnectionPool(8, 15, TimeUnit.SECONDS)) 
 | 
                                // 这里你可以根据自己的机型设置同时连接的个数和时间,我这里8个,和每个保持时间为10s 
 | 
                                .build(); 
 | 
                    } 
 | 
                }) 
 | 
                .gsonOptions(new GsonOptions() { 
 | 
                    @Override 
 | 
                    public void applyOptions(GsonBuilder builder) { 
 | 
                        //TODO 配置Gson 
 | 
                    } 
 | 
                }) 
 | 
                .roomDatabaseOptions(new RoomDatabaseOptions<RoomDatabase>() { 
 | 
                    @Override 
 | 
                    public void applyOptions(RoomDatabase.Builder<RoomDatabase> builder) { 
 | 
                        //TODO 配置RoomDatabase 
 | 
                    } 
 | 
                }) 
 | 
                .interceptorConfigOptions(new InterceptorConfigOptions() { 
 | 
                    @Override 
 | 
                    public void applyOptions(InterceptorConfig.Builder builder) { 
 | 
                        //TODO 配置拦截器 
 | 
  
 | 
                    } 
 | 
                }); 
 | 
    } 
 | 
} 
 |