package me.wcy.music.http;
import android.graphics.Bitmap;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.BitmapCallback;
import com.zhy.http.okhttp.callback.FileCallBack;
import java.io.File;
import me.wcy.music.model.ArtistInfo;
import me.wcy.music.model.DownloadInfo;
import me.wcy.music.model.Lrc;
import me.wcy.music.model.OnlineMusicList;
import me.wcy.music.model.SearchMusic;
import me.wcy.music.model.Splash;
import okhttp3.Call;
/**
* Created by hzwangchenyan on 2017/2/8.
*/
public class HttpClient {
private static final String SPLASH_URL = "http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1";
private static final String BASE_URL = "http://tingapi.ting.baidu.com/v1/restserver/ting";
private static final String METHOD_GET_MUSIC_LIST = "baidu.ting.billboard.billList";
private static final String METHOD_DOWNLOAD_MUSIC = "baidu.ting.song.play";
private static final String METHOD_ARTIST_INFO = "baidu.ting.artist.getInfo";
private static final String METHOD_SEARCH_MUSIC = "baidu.ting.search.catalogSug";
private static final String METHOD_LRC = "baidu.ting.song.lry";
private static final String PARAM_METHOD = "method";
private static final String PARAM_TYPE = "type";
private static final String PARAM_SIZE = "size";
private static final String PARAM_OFFSET = "offset";
private static final String PARAM_SONG_ID = "songid";
private static final String PARAM_TING_UID = "tinguid";
private static final String PARAM_QUERY = "query";
public static void getSplash(final HttpCallback<Splash> callback) {
OkHttpUtils.get().url(SPLASH_URL).build()
.execute(new JsonCallback<Splash>(Splash.class) {
@Override
public void onResponse(Splash response, int id) {
callback.onSuccess(response);
}
@Override
public void onError(Call call, Exception e, int id) {
callback.onFail(e);
}
@Override
public void onAfter(int id) {
callback.onFinish();
}
});
}
public static void downloadFile(String url, String destFileDir, String destFileName, final HttpCallback<File> callback) {
OkHttpUtils.get().url(url).build()
.execute(new FileCallBack(destFileDir, destFileName) {
@Override
public void inProgress(float progress, long total, int id) {
}
@Override
public void onResponse(File file, int id) {
callback.onSuccess(file);
}
@Override
public void onError(Call call, Exception e, int id) {
callback.onFail(e);
}
@Override
public void onAfter(int id) {
callback.onFinish();
}
});
}
public static void getSongListInfo(String type, int size, int offset, final HttpCallback<OnlineMusicList> callback) {
OkHttpUtils.get().url(BASE_URL)
.addParams(PARAM_METHOD, METHOD_GET_MUSIC_LIST)
.addParams(PARAM_TYPE, type)
.addParams(PARAM_SIZE, String.valueOf(size))
.addParams(PARAM_OFFSET, String.valueOf(offset))
.build()
.execute(new JsonCallback<OnlineMusicList>(OnlineMusicList.class) {
@Override
public void onResponse(OnlineMusicList response, int id) {
callback.onSuccess(response);
}
@Override
public void onError(Call call, Exception e, int id) {
callback.onFail(e);
}
@Override
public void onAfter(int id) {
callback.onFinish();
}
});
}
public static void getMusicDownloadInfo(String songId, final HttpCallback<DownloadInfo> callback) {
OkHttpUtils.get().url(BASE_URL)
.addParams(PARAM_METHOD, METHOD_DOWNLOAD_MUSIC)
.addParams(PARAM_SONG_ID, songId)
.build()
.execute(new JsonCallback<DownloadInfo>(DownloadInfo.class) {
@Override
public void onResponse(DownloadInfo response, int id) {
callback.onSuccess(response);
}
@Override
public void onError(Call call, Exception e, int id) {
callback.onFail(e);
}
@Override
public void onAfter(int id) {
callback.onFinish();
}
});
}
public static void getBitmap(String url, final HttpCallback<Bitmap> callback) {
OkHttpUtils.get().url(url).build()
.execute(new BitmapCallback() {
@Override
public void onResponse(Bitmap bitmap, int id) {
callback.onSuccess(bitmap);
}
@Override
public void onError(Call call, Exception e, int id) {
callback.onFail(e);
}
@Override
public void onAfter(int id) {
callback.onFinish();
}
});
}
public static void getLrc(String songId, final HttpCallback<Lrc> callback) {
OkHttpUtils.get().url(BASE_URL)
.addParams(PARAM_METHOD, METHOD_LRC)
.addParams(PARAM_SONG_ID, songId)
.build()
.execute(new JsonCallback<Lrc>(Lrc.class) {
@Override
public void onResponse(Lrc response, int id) {
callback.onSuccess(response);
}
@Override
public void onError(Call call, Exception e, int id) {
callback.onFail(e);
}
@Override
public void onAfter(int id) {
callback.onFinish();
}
});
}
public static void searchMusic(String keyword, final HttpCallback<SearchMusic> callback) {
OkHttpUtils.get().url(BASE_URL)
.addParams(PARAM_METHOD, METHOD_SEARCH_MUSIC)
.addParams(PARAM_QUERY, keyword)
.build()
.execute(new JsonCallback<SearchMusic>(SearchMusic.class) {
@Override
public void onResponse(SearchMusic response, int id) {
callback.onSuccess(response);
}
@Override
public void onError(Call call, Exception e, int id) {
callback.onFail(e);
}
@Override
public void onAfter(int id) {
callback.onFinish();
}
});
}
public static void getArtistInfo(String tingUid, final HttpCallback<ArtistInfo> callback) {
OkHttpUtils.get().url(BASE_URL)
.addParams(PARAM_METHOD, METHOD_ARTIST_INFO)
.addParams(PARAM_TING_UID, tingUid)
.build()
.execute(new JsonCallback<ArtistInfo>(ArtistInfo.class) {
@Override
public void onResponse(ArtistInfo response, int id) {
callback.onSuccess(response);
}
@Override
public void onError(Call call, Exception e, int id) {
callback.onFail(e);
}
@Override
public void onAfter(int id) {
callback.onFinish();
}
});
}
}