package ren.solid.library.http; import io.reactivex.Single; import okhttp3.ResponseBody; import ren.solid.library.http.func.ResultFunc; import ren.solid.library.http.func.StringFunc; import ren.solid.library.http.subscriber.DownLoadSubscribe; import ren.solid.library.rx.RxUtils; /** * Created by _SOLID * Date:2016/7/28 * Time:9:22 */ public class ObservableProvider { private CommonService mCommonService; private static class DefaultHolder { private static ObservableProvider INSTANCE = new ObservableProvider(); } private ObservableProvider() { mCommonService = ServiceFactory.getInstance().createService(CommonService.class); } public static ObservableProvider getDefault() { return DefaultHolder.INSTANCE; } public Single<String> loadString(String url) { return mCommonService .loadString(url) .map(new StringFunc()); } public <T> Single<HttpResult<T>> loadResult(String url) { return loadString(url).map(new ResultFunc<T>()); } public void download(String url, final DownLoadSubscribe subscribe) { mCommonService .download(url) .compose(RxUtils.<ResponseBody>all_io_single()) .subscribe(subscribe); } }