package name.caiyao.microreader.presenter.impl; import android.content.Context; import android.text.TextUtils; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.util.ArrayList; import name.caiyao.microreader.api.weiboVideo.VideoRequest; import name.caiyao.microreader.bean.weiboVideo.WeiboVideoBlog; import name.caiyao.microreader.bean.weiboVideo.WeiboVideoResponse; import name.caiyao.microreader.config.Config; import name.caiyao.microreader.presenter.IVideoPresenter; import name.caiyao.microreader.ui.iView.IVideoFragment; import name.caiyao.microreader.utils.CacheUtil; import rx.Subscriber; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Func1; import rx.schedulers.Schedulers; /** * Created by 蔡小木 on 2016/4/23 0023. */ public class VideoPresenterImpl extends BasePresenterImpl implements IVideoPresenter { private IVideoFragment mIVideoFragment; private CacheUtil mCacheUtil; private Gson mGson = new Gson(); public VideoPresenterImpl(IVideoFragment iVideoFragment, Context context) { if (iVideoFragment == null) throw new IllegalArgumentException("iVideoFragment must not be null"); mIVideoFragment = iVideoFragment; mCacheUtil = CacheUtil.get(context); } @Override public void getVideo(final int page) { Subscription subscription = VideoRequest.getVideoRequstApi().getWeiboVideo(page) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .map(new Func1<WeiboVideoResponse, ArrayList<WeiboVideoBlog>>() { @Override public ArrayList<WeiboVideoBlog> call(WeiboVideoResponse weiboVideoResponse) { ArrayList<WeiboVideoBlog> arrayList = new ArrayList<>(); if (!weiboVideoResponse.getCardsItems()[0].getModType().equals("mod/empty")) { ArrayList<WeiboVideoBlog> a = weiboVideoResponse.getCardsItems()[0].getBlogs(); for (WeiboVideoBlog w : a) { if (w.getBlog().getmBlog() != null)//处理转发的微博 w.setBlog(w.getBlog().getmBlog()); if (w.getBlog().getPageInfo() != null && !TextUtils.isEmpty(w.getBlog().getPageInfo().getVideoPic()))//处理无视频微博 { if (w.getBlog().getPageInfo().getVideoUrl().contains("m.weibo.cn")) w.getBlog().getPageInfo().setVideoUrl("http://weibo.com/p/" + w.getBlog().getPageInfo().getVideoUrl().split("=")[1]); arrayList.add(w); } } } return arrayList; } }) .subscribe(new Subscriber<ArrayList<WeiboVideoBlog>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { mIVideoFragment.hidProgressDialog(); mIVideoFragment.showError(e.getMessage()); } @Override public void onNext(ArrayList<WeiboVideoBlog> weiboVideoResponse) { mIVideoFragment.hidProgressDialog(); mIVideoFragment.updateList(weiboVideoResponse); mCacheUtil.put(Config.VIDEO + page, mGson.toJson(weiboVideoResponse)); } }); addSubscription(subscription); } @Override public void getVideoFromCache(int page) { if (mCacheUtil.getAsJSONArray(Config.VIDEO + page) != null && mCacheUtil.getAsJSONArray(Config.VIDEO + page).length() != 0) { ArrayList<WeiboVideoBlog> weiboVideoBlogs = mGson.fromJson(mCacheUtil.getAsJSONArray(Config.VIDEO + page).toString(), new TypeToken<ArrayList<WeiboVideoBlog>>() { }.getType()); mIVideoFragment.updateList(weiboVideoBlogs); } } }