package com.gzsll.hupu.data.remote; import com.gzsll.hupu.api.forum.ForumApi; import com.gzsll.hupu.bean.Forums; import com.gzsll.hupu.bean.ForumsData; import com.gzsll.hupu.bean.ForumsResult; import com.gzsll.hupu.bean.MyForumsData; import com.gzsll.hupu.bean.MyForumsResult; import com.gzsll.hupu.data.ForumDataSource; import com.gzsll.hupu.db.Forum; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import rx.Observable; import rx.functions.Func1; /** * Created by sll on 2016/6/3. */ public class ForumRemoteDataSource implements ForumDataSource { private final ForumApi mForumApi; @Inject public ForumRemoteDataSource(ForumApi mForumApi) { this.mForumApi = mForumApi; } @Override public Observable<List<Forum>> getForumList(final String forumId) { if (forumId.equals("0")) { return mForumApi.getMyForums().map(new Func1<MyForumsData, List<Forum>>() { @Override public List<Forum> call(MyForumsData myForumsData) { if (myForumsData != null && myForumsData.data != null) { MyForumsResult data = myForumsData.data; for (Forum forum : data.sub) { forum.setForumId(data.fid); forum.setCategoryName(data.name); forum.setWeight(1); } return data.sub; } return null; } }).onErrorReturn(new Func1<Throwable, List<Forum>>() { @Override public List<Forum> call(Throwable throwable) { return null; } }); } else { return mForumApi.getForums().map(new Func1<ForumsData, List<Forum>>() { @Override public List<Forum> call(ForumsData forumsData) { if (forumsData != null) { List<Forum> forumList = new ArrayList<>(); for (ForumsResult data : forumsData.data) { if (data.fid.equals(forumId)) { for (Forums forums : data.sub) { for (Forum forum : forums.data) { forum.setForumId(data.fid); forum.setCategoryName(forums.name); forum.setWeight(forums.weight); forumList.add(forum); } } } } return forumList; } return null; } }).onErrorReturn(new Func1<Throwable, List<Forum>>() { @Override public List<Forum> call(Throwable throwable) { return null; } }); } } @Override public Observable<Boolean> removeForum(String fid) { return null; } }