package com.gzsll.hupu.injector.module;
import android.app.NotificationManager;
import android.content.Context;
import android.view.LayoutInflater;
import com.gzsll.hupu.components.okhttp.CookieInterceptor;
import com.gzsll.hupu.components.okhttp.HttpLoggingInterceptor;
import com.gzsll.hupu.components.okhttp.OkHttpHelper;
import com.gzsll.hupu.components.retrofit.RequestHelper;
import com.gzsll.hupu.components.storage.UserStorage;
import com.squareup.otto.Bus;
import java.util.concurrent.TimeUnit;
import javax.inject.Named;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import okhttp3.OkHttpClient;
/**
* @author gzsll
*/
@Module
public class ApplicationModule {
private final Context context;
public ApplicationModule(Context context) {
this.context = context;
}
@Provides
@Singleton
public Context provideApplicationContext() {
return context.getApplicationContext();
}
@Provides
@Singleton
public Bus provideBusEvent() {
return new Bus();
}
@Provides
@Singleton
@Named("api")
OkHttpClient provideApiOkHttpClient(
CookieInterceptor mCookieInterceptor) {
OkHttpClient.Builder builder = new OkHttpClient.Builder().connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS);
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
builder.addInterceptor(logging);
builder.addInterceptor(mCookieInterceptor);
return builder.build();
}
@Provides
@Singleton
OkHttpClient provideOkHttpClient(@Named("api") OkHttpClient mOkHttpClient) {
OkHttpClient.Builder builder = mOkHttpClient.newBuilder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.retryOnConnectionFailure(true);
builder.interceptors().clear();
return builder.build();
}
@Provides
@Singleton
LayoutInflater provideLayoutInflater(Context context) {
return (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Provides
@Singleton
NotificationManager provideNotificationManager(Context mContext) {
return (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
}
@Provides
@Singleton
CookieInterceptor provideCookieInterceptor(UserStorage mUserStorage) {
return new CookieInterceptor(mUserStorage);
}
@Provides
@Singleton
UserStorage provideUserStorage(Context mContext) {
return new UserStorage(mContext);
}
@Provides
@Singleton
RequestHelper provideRequestHelper(Context mContext,
UserStorage mUserStorage) {
return new RequestHelper(mContext, mUserStorage);
}
@Provides
@Singleton
OkHttpHelper provideOkHttpHelper(OkHttpClient mOkHttpClient) {
return new OkHttpHelper(mOkHttpClient);
}
}