package com.gzsll.hupu.data.remote; import com.gzsll.hupu.api.forum.ForumApi; import com.gzsll.hupu.bean.ThreadLightReplyData; import com.gzsll.hupu.bean.ThreadReplyData; import com.gzsll.hupu.data.ContentDataSource; import com.gzsll.hupu.db.ThreadInfo; import com.gzsll.hupu.db.ThreadReply; import java.util.List; import javax.inject.Inject; import rx.Observable; import rx.functions.Func1; import rx.schedulers.Schedulers; /** * Created by sll on 2016/6/3. */ public class ContentRemoteDataSource implements ContentDataSource { private final ForumApi mForumApi; @Inject public ContentRemoteDataSource(ForumApi mForumApi) { this.mForumApi = mForumApi; } @Override public Observable<ThreadInfo> getThreadInfo(String fid, String tid) { return mForumApi.getThreadInfo(tid, fid, 1, "") .onErrorReturn(new Func1<Throwable, ThreadInfo>() { @Override public ThreadInfo call(Throwable throwable) { return null; } }) .subscribeOn(Schedulers.io()); } @Override public Observable<List<ThreadReply>> getReplies(String fid, String tid, int page) { return mForumApi.getThreadReplyList(tid, fid, page) .map(new Func1<ThreadReplyData, List<ThreadReply>>() { @Override public List<ThreadReply> call(ThreadReplyData threadReplyData) { if (threadReplyData != null && threadReplyData.status == 200) { return threadReplyData.result.list; } return null; } }) .onErrorReturn(new Func1<Throwable, List<ThreadReply>>() { @Override public List<ThreadReply> call(Throwable throwable) { return null; } }) .subscribeOn(Schedulers.io()); } @Override public Observable<List<ThreadReply>> getLightReplies(String fid, String tid) { return mForumApi.getThreadLightReplyList(tid, fid) .map(new Func1<ThreadLightReplyData, List<ThreadReply>>() { @Override public List<ThreadReply> call(ThreadLightReplyData threadLightReplyData) { if (threadLightReplyData != null && threadLightReplyData.status == 200) { return threadLightReplyData.list; } return null; } }) .onErrorReturn(new Func1<Throwable, List<ThreadReply>>() { @Override public List<ThreadReply> call(Throwable throwable) { return null; } }) .subscribeOn(Schedulers.io()); } }