package com.jerey.keepgank.net; import android.util.Log; import com.jerey.keepgank.bean.Data; import com.jerey.keepgank.bean.GankDay; import java.io.IOException; import okhttp3.Interceptor; import okhttp3.Request; import okhttp3.Response; import retrofit2.Retrofit; import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; import retrofit2.http.GET; import retrofit2.http.Path; import rx.Observable; /** * Created by Xiamin on 2017/2/12. */ public class GankApi { public static final String BASE_URL= "http://gank.io"; /** * 每次加载条目 */ public static final int LOAD_LIMIT = 20; /** * 加载起始页面 */ public static GankApi instance; private final GankCloudService mWebService; public static GankApi getInstance() { if (null == instance) { synchronized (GankApi.class) { if (null == instance) { instance = new GankApi(); } } } return instance; } public GankApi() { Retrofit restAdapter = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); mWebService = restAdapter.create(GankCloudService.class); } public interface GankCloudService { @GET("/api/data/福利/{limit}/{page}") Observable<Data> getBenefitsGoods( @Path("limit") int limit, @Path("page") int page ); @GET("/api/data/Android/{limit}/{page}") Observable<Data> getAndroidGoods( @Path("limit") int limit, @Path("page") int page ); @GET("/api/data/iOS/{limit}/{page}") Observable<Data> getIosGoods( @Path("limit") int limit, @Path("page") int page ); @GET("/api/data/前端/{limit}/{page}") Observable<Data> getFrontEndGoods( @Path("limit") int limit, @Path("page") int page ); @GET("/api/data/休息视频/{limit}/{page}") Observable<Data> getVidoeGoods( @Path("limit") int limit, @Path("page") int page ); @GET("/api/data/拓展资源/{limit}/{page}") Observable<Data> getResourcesGoods( @Path("limit") int limit, @Path("page") int page ); @GET("/api/data/瞎推荐/{limit}/{page}") Observable<Data> getRecommendGoods( @Path("limit") int limit, @Path("page") int page ); @GET("/api/data/all/{limit}/{page}") Observable<Data> getAllGoods( @Path("limit") int limit, @Path("page") int page ); @GET("/api/day/{year}/{month}/{day}") Observable<GankDay> getGoodsByDay( @Path("year") int year, @Path("month") int month, @Path("day") int day ); } public Observable<Data> getCommonGoods(String type, int limit, int page) { // return mWebService.getGoods(type, limit, page); if (Config.TYPE_ANDROID.equalsIgnoreCase(type)) { return mWebService.getAndroidGoods(limit, page); } else if (Config.TYPE_IOS.equalsIgnoreCase(type)) { return mWebService.getIosGoods(limit, page); } else if (Config.TYPE_FRONT_END.equals(type)) { return mWebService.getFrontEndGoods(limit, page); } else if (Config.TYPE_RECOMMEND.equals(type)) { return mWebService.getRecommendGoods(limit, page); } else if (Config.TYPE_VIDEO.equals(type)) { return mWebService.getVidoeGoods(limit, page); } else if (Config.TYPE_GIRL.equals(type)) { return mWebService.getBenefitsGoods(limit, page); } else if (Config.TYPE_RESOURCES.equals(type)) { return mWebService.getResourcesGoods(limit, page); } else { return mWebService.getAndroidGoods(limit, page); } } public GankCloudService getWebService(){ return mWebService; } class HttpInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); //打印请求链接 String TAG_REQUEST = "request"; Log.e(TAG_REQUEST, "request" + request.url().toString()); Response response = chain.proceed(request); //打印返回的message // Log.e(TAG_REQUEST, "response" + response.toString()); return response; } } }