package com.jparkie.aizoban.controllers.networks; import com.squareup.okhttp.Headers; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import java.util.concurrent.TimeUnit; import rx.Observable; import rx.Subscriber; public class MangaService { public static final int CONNECT_TIMEOUT = 10; public static final int WRITE_TIMEOUT = 10; public static final int READ_TIMEOUT = 30; private static MangaService sInstance; private OkHttpClient mClient; private MangaService() { mClient = new OkHttpClient(); mClient.setConnectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS); mClient.setWriteTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS); mClient.setReadTimeout(READ_TIMEOUT, TimeUnit.SECONDS); } public static MangaService getPermanentInstance() { if (sInstance == null) { sInstance = new MangaService(); } return sInstance; } public static MangaService getTemporaryInstance() { return new MangaService(); } public Observable<Response> getResponse(final String url) { return Observable.create(new Observable.OnSubscribe<Response>() { @Override public void call(Subscriber<? super Response> subscriber) { try { Request request = new Request.Builder() .url(url) .header("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)") .build(); subscriber.onNext(mClient.newCall(request).execute()); subscriber.onCompleted(); } catch (Throwable e) { subscriber.onError(e); } } }); } public Observable<Response> getCustomResponse(final String url, final Headers headers) { return Observable.create(new Observable.OnSubscribe<Response>() { @Override public void call(Subscriber<? super Response> subscriber) { try { Request request = new Request.Builder() .url(url) .headers(headers) .build(); subscriber.onNext(mClient.newCall(request).execute()); subscriber.onCompleted(); } catch (Throwable e) { subscriber.onError(e); } } }); } public static Observable<String> mapResponseToString(final Response response) { return Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { try { subscriber.onNext(response.body().string()); subscriber.onCompleted(); } catch (Throwable e) { subscriber.onError(e); } } }); } }