package com.sjl.yuehu.injector.module;
import android.content.Context;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.sjl.yuehu.api.ApiService;
import com.sjl.yuehu.injector.scope.ForApplication;
import com.sjl.yuehu.util.CacheUtil;
import java.io.File;
import java.util.concurrent.TimeUnit;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import okhttp3.Cache;
import okhttp3.OkHttpClient;
import retrofit2.GsonConverterFactory;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
/**
* Created by 小鹿 on 2017/2/8.
*/
@Module
public class ApiModule {
private static final long OKCLIENT_DISK_CACHE_SIZE = 20 * 1024 * 1024;
private static final String OKCLIENT_DISK_CACHE_NAME = "http-cache";
String zhihuUrl = "http://news-at.zhihu.com/api/4/";
@Provides
@Singleton
OkHttpClient provideOkHttpClient(@ForApplication Context context) {
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.connectTimeout(15 * 1000L, TimeUnit.MILLISECONDS)//15
.readTimeout(20 * 1000L, TimeUnit.MILLISECONDS)//20
.writeTimeout(30 * 1000L, TimeUnit.MILLISECONDS)//15
.cache(new Cache(new File(CacheUtil.getHttpCacheDir(context), OKCLIENT_DISK_CACHE_NAME),
OKCLIENT_DISK_CACHE_SIZE)); //设置缓存目录和20M缓存
return builder.build();
}
@Provides
@Singleton
Gson provideGson() {
return new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
}
@Provides
@Singleton
Retrofit provideRetrofit(OkHttpClient okHttpClient) {
return new Retrofit.Builder()
.baseUrl(zhihuUrl)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
}
@Provides
@Singleton
ApiService provideApiService(Retrofit retrofit) {
return retrofit.create(ApiService.class);
}
}