package com.jdroid.android.debug.facebook.stetho;
import android.util.Log;
import com.jdroid.android.application.AbstractApplication;
import com.jdroid.android.context.BuildConfigUtils;
import com.jdroid.android.provider.AbstractInitProvider;
import com.jdroid.java.collections.Lists;
import com.jdroid.java.http.HttpServiceFactory;
import com.jdroid.java.utils.ReflectionUtils;
public class StethoInitProvider extends AbstractInitProvider {
private static final String OKHTTP_SERVICE_FACTORY = "com.jdroid.java.http.okhttp.OkHttpServiceFactory";
private static final String OKHTTP_INTERCEPTOR = "okhttp3.Interceptor";
private static final String STETHO_OKHTTP_INTERCEPTOR = "com.facebook.stetho.okhttp3.StethoInterceptor";
private static final String ADD_NETWORK_INTERCEPTOR = "addNetworkInterceptor";
@Override
protected void init() {
try {
if (BuildConfigUtils.getBuildConfigBoolean("STETHO_ENABLED", false)) {
if (BuildConfigUtils.getBuildConfigBoolean("JDROID_JAVA_OKHTTP_ENABLED", false)) {
HttpServiceFactory okhttpServiceFactory = ReflectionUtils.newInstance(OKHTTP_SERVICE_FACTORY);
Class<?> interceptorClass = ReflectionUtils.getClass(OKHTTP_INTERCEPTOR);
Object stethoInterceptor = ReflectionUtils.newInstance(STETHO_OKHTTP_INTERCEPTOR);
ReflectionUtils.invokeMethod(OKHTTP_SERVICE_FACTORY, okhttpServiceFactory, ADD_NETWORK_INTERCEPTOR,
Lists.<Class<?>>newArrayList(interceptorClass), Lists.newArrayList(stethoInterceptor));
AbstractApplication.get().setHttpServiceFactory(okhttpServiceFactory);
}
AbstractApplication.get().addAppModulesMap(StethoAppModule.class.getSimpleName(), new StethoAppModule());
}
} catch (Exception e) {
Log.e(StethoInitProvider.class.getName(), "Error initializing StethoInitProvider", e);
}
}
}