package com.king.tv.di.module;
import android.content.Context;
import com.king.tv.App;
import com.king.tv.http.APIService;
import java.util.concurrent.TimeUnit;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* @author Jenly <a href="mailto:jenly1314@gmail.com">Jenly</a>
* @since 2017/2/24
*/
@Module
public class AppModule {
/**
* 默认超时时间 单位/秒
*/
private static final int DEFAULT_TIME_OUT = 10;
private Context context;
private String baseUrl;
public AppModule(App context,String baseUrl){
this.context = context;
this.baseUrl = baseUrl;
}
@Provides
@Singleton
public Context provideContext(){
return context;
}
@Provides
@Singleton
public Retrofit provideRetrofit() {
return new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.client(provideOkHttpClient())
.build();
}
@Provides
@Singleton
public OkHttpClient provideOkHttpClient(){
return new OkHttpClient.Builder()
.connectTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS)
.readTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS)
.writeTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS)
.build();
}
@Provides
@Singleton
public APIService provideAPIService(){
return provideRetrofit().create(APIService.class);
}
}