package io.hefuyi.zhihudaily.mvp;
import android.content.Context;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.robolectric.RuntimeEnvironment;
import java.util.concurrent.TimeUnit;
import io.hefuyi.zhihudaily.Constants;
import io.hefuyi.zhihudaily.interceptor.CacheInterceptor;
import io.hefuyi.zhihudaily.respository.RepositoryImpl;
import io.hefuyi.zhihudaily.respository.interfaces.Repository;
import io.hefuyi.zhihudaily.util.FileUtils;
import okhttp3.Cache;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.GsonConverterFactory;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
/**
* Created by hefuyi on 16/9/5.
*/
public class TestUtils {
private static Repository mRepository;
public static Repository getRepository() {
if (mRepository != null) {
return mRepository;
} else {
String endpointUrl = "http://news.at.zhihu.com/api/4/";
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
GsonConverterFactory gsonConverterFactory = GsonConverterFactory.create(gson);
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.cache(new Cache(FileUtils.getHttpCacheDir(RuntimeEnvironment.application), Constants.Config.HTTP_CACHE_SIZE))
.connectTimeout(Constants.Config.HTTP_CONNECT_TIMEOUT, TimeUnit.MILLISECONDS)
.readTimeout(Constants.Config.HTTP_READ_TIMEOUT, TimeUnit.MILLISECONDS)
.addInterceptor(new CacheInterceptor())
.build();
OkHttpClient newClient = client.newBuilder().addInterceptor(loggingInterceptor).build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(endpointUrl)
.client(newClient)
.addConverterFactory(gsonConverterFactory)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
mRepository=new RepositoryImpl(retrofit);
return mRepository;
}
}
public static Context getContext() {
return RuntimeEnvironment.application;
}
}