package com.codeest.geeknews.model.http;
import com.codeest.geeknews.app.Constants;
import com.codeest.geeknews.model.bean.CommentBean;
import com.codeest.geeknews.model.bean.DailyBeforeListBean;
import com.codeest.geeknews.model.bean.DailyListBean;
import com.codeest.geeknews.model.bean.DetailExtraBean;
import com.codeest.geeknews.model.bean.GankItemBean;
import com.codeest.geeknews.model.bean.GankSearchItemBean;
import com.codeest.geeknews.model.bean.GoldListBean;
import com.codeest.geeknews.model.bean.HotListBean;
import com.codeest.geeknews.model.bean.NodeBean;
import com.codeest.geeknews.model.bean.NodeListBean;
import com.codeest.geeknews.model.bean.RepliesListBean;
import com.codeest.geeknews.model.bean.SectionChildListBean;
import com.codeest.geeknews.model.bean.SectionListBean;
import com.codeest.geeknews.model.bean.ThemeChildListBean;
import com.codeest.geeknews.model.bean.ThemeListBean;
import com.codeest.geeknews.model.bean.VersionBean;
import com.codeest.geeknews.model.bean.WXItemBean;
import com.codeest.geeknews.model.bean.WelcomeBean;
import com.codeest.geeknews.model.bean.ZhihuDetailBean;
import com.codeest.geeknews.model.http.api.GankApis;
import com.codeest.geeknews.model.http.api.GoldApis;
import com.codeest.geeknews.model.http.api.MyApis;
import com.codeest.geeknews.model.http.api.VtexApis;
import com.codeest.geeknews.model.http.api.WeChatApis;
import com.codeest.geeknews.model.http.api.ZhihuApis;
import com.codeest.geeknews.model.http.response.GankHttpResponse;
import com.codeest.geeknews.model.http.response.GoldHttpResponse;
import com.codeest.geeknews.model.http.response.MyHttpResponse;
import com.codeest.geeknews.model.http.response.WXHttpResponse;
import java.util.List;
import javax.inject.Inject;
import io.reactivex.Flowable;
/**
* Created by codeest on 2016/8/3.
*/
public class RetrofitHelper implements HttpHelper {
private ZhihuApis mZhihuApiService;
private GankApis mGankApiService;
private WeChatApis mWechatApiService;
private MyApis mMyApiService;
private GoldApis mGoldApiService;
private VtexApis mVtexApiService;
@Inject
public RetrofitHelper(ZhihuApis zhihuApiService, GankApis gankApiService, WeChatApis wechatApiService,
MyApis myApiService, GoldApis goldApiService, VtexApis vtexApiService) {
this.mZhihuApiService = zhihuApiService;
this.mGankApiService = gankApiService;
this.mWechatApiService = wechatApiService;
this.mMyApiService = myApiService;
this.mGoldApiService = goldApiService;
this.mVtexApiService = vtexApiService;
}
@Override
public Flowable<DailyListBean> fetchDailyListInfo() {
return mZhihuApiService.getDailyList();
}
@Override
public Flowable<DailyBeforeListBean> fetchDailyBeforeListInfo(String date) {
return mZhihuApiService.getDailyBeforeList(date);
}
@Override
public Flowable<ThemeListBean> fetchDailyThemeListInfo() {
return mZhihuApiService.getThemeList();
}
@Override
public Flowable<ThemeChildListBean> fetchThemeChildListInfo(int id) {
return mZhihuApiService.getThemeChildList(id);
}
@Override
public Flowable<SectionListBean> fetchSectionListInfo() {
return mZhihuApiService.getSectionList();
}
@Override
public Flowable<SectionChildListBean> fetchSectionChildListInfo(int id) {
return mZhihuApiService.getSectionChildList(id);
}
@Override
public Flowable<ZhihuDetailBean> fetchDetailInfo(int id) {
return mZhihuApiService.getDetailInfo(id);
}
@Override
public Flowable<DetailExtraBean> fetchDetailExtraInfo(int id) {
return mZhihuApiService.getDetailExtraInfo(id);
}
@Override
public Flowable<WelcomeBean> fetchWelcomeInfo(String res) {
return mZhihuApiService.getWelcomeInfo(res);
}
@Override
public Flowable<CommentBean> fetchLongCommentInfo(int id) {
return mZhihuApiService.getLongCommentInfo(id);
}
@Override
public Flowable<CommentBean> fetchShortCommentInfo(int id) {
return mZhihuApiService.getShortCommentInfo(id);
}
@Override
public Flowable<HotListBean> fetchHotListInfo() {
return mZhihuApiService.getHotList();
}
@Override
public Flowable<GankHttpResponse<List<GankItemBean>>> fetchTechList(String tech, int num, int page) {
return mGankApiService.getTechList(tech, num, page);
}
@Override
public Flowable<GankHttpResponse<List<GankItemBean>>> fetchGirlList(int num, int page) {
return mGankApiService.getGirlList(num, page);
}
@Override
public Flowable<GankHttpResponse<List<GankItemBean>>> fetchRandomGirl(int num) {
return mGankApiService.getRandomGirl(num);
}
@Override
public Flowable<GankHttpResponse<List<GankSearchItemBean>>> fetchGankSearchList(String query,String type,int num,int page) {
return mGankApiService.getSearchList(query,type,num,page);
}
@Override
public Flowable<WXHttpResponse<List<WXItemBean>>> fetchWechatListInfo(int num, int page) {
return mWechatApiService.getWXHot(Constants.KEY_API, num, page);
}
@Override
public Flowable<WXHttpResponse<List<WXItemBean>>> fetchWechatSearchListInfo(int num, int page, String word) {
return mWechatApiService.getWXHotSearch(Constants.KEY_API, num, page, word);
}
@Override
public Flowable<MyHttpResponse<VersionBean>> fetchVersionInfo() {
return mMyApiService.getVersionInfo();
}
@Override
public Flowable<GoldHttpResponse<List<GoldListBean>>> fetchGoldList(String type, int num, int page) {
return mGoldApiService.getGoldList(Constants.LEANCLOUD_ID, Constants.LEANCLOUD_SIGN,
"{\"category\":\"" + type + "\"}", "-createdAt", "user,user.installation", num, page * num);
}
@Override
public Flowable<GoldHttpResponse<List<GoldListBean>>> fetchGoldHotList(String type, String dataTime, int limit) {
return mGoldApiService.getGoldHot(Constants.LEANCLOUD_ID, Constants.LEANCLOUD_SIGN,
"{\"category\":\"" + type + "\",\"createdAt\":{\"$gt\":{\"__type\":\"Date\",\"iso\":\"" + dataTime + "T00:00:00.000Z\"}},\"objectId\":{\"$nin\":[\"58362f160ce463005890753e\",\"583659fcc59e0d005775cc8c\",\"5836b7358ac2470065d3df62\"]}}",
"-hotIndex", "user,user.installation", limit);
}
@Override
public Flowable<NodeBean> fetchNodeInfo(String name) {
return mVtexApiService.getNodeInfo(name);
}
@Override
public Flowable<List<NodeListBean>> fetchTopicList(String name) {
return mVtexApiService.getTopicList(name);
}
@Override
public Flowable<List<NodeListBean>> fetchTopicInfo(String id) {
return mVtexApiService.getTopicInfo(id);
}
@Override
public Flowable<List<RepliesListBean>> fetchRepliesList(String id){
return mVtexApiService.getRepliesList(id);
}
}