package com.dingmouren.dingdingmusic.utils;
import android.app.Activity;
import android.content.Context;
import android.widget.Toast;
import com.dingmouren.dingdingmusic.Constant;
import com.dingmouren.dingdingmusic.MyApplication;
import com.dingmouren.dingdingmusic.api.ApiManager;
import com.dingmouren.dingdingmusic.bean.MusicBean;
import com.dingmouren.dingdingmusic.bean.QQMusicBody;
import com.dingmouren.dingdingmusic.bean.QQMusicPage;
import com.dingmouren.dingdingmusic.bean.QQMusicResult;
import com.dingmouren.greendao.MusicBeanDao;
import com.jiongbull.jlog.JLog;
import java.util.List;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action1;
import rx.schedulers.Schedulers;
/**
* Created by dingmouren on 2017/2/4.
*/
public class RequestMusicUtil {
private static final String TAG = RequestMusicUtil.class.getName();
public void requestMusic(String topic) {
ApiManager.getApiManager().getQQMusicApiService()
.getQQMusic(Constant.QQ_MUSIC_APP_ID, Constant.QQ_MUSIC_SIGN, topic)
.subscribeOn(Schedulers.io())
.doOnNext(new Action1<QQMusicResult<QQMusicBody<QQMusicPage<List<MusicBean>>>>>() {
@Override
public void call(QQMusicResult<QQMusicBody<QQMusicPage<List<MusicBean>>>> qqMusicBodyQQMusicResult) {
parseData(topic, qqMusicBodyQQMusicResult.getShowapi_res_body().getPagebean().getSonglist());
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(qqMusicBodyQQMusicResult ->{},this::loadError);
}
/**
* 将数据保存到数据库
* @param topic
* @param list
*/
private static void parseData(String topic, List<MusicBean> list) {
if (null != topic && null != list) {
for (int i = 0; i < list.size(); i++) {
list.get(i).setType(Integer.parseInt(topic));
if (0 == MyApplication.getDaoSession().getMusicBeanDao().queryBuilder().where(MusicBeanDao.Properties.Songid.eq(list.get(i).getSongid())).count()) {
MyApplication.getDaoSession().getMusicBeanDao().insertOrReplace(list.get(i));
}
}
}
}
private void loadError(Throwable throwable) {
throwable.printStackTrace();
Toast.makeText(MyApplication.mContext,"网络错误",Toast.LENGTH_SHORT).show();
}
}