Skip to content

Instantly share code, notes, and snippets.

@pyadav
Created August 8, 2016 04:30
Show Gist options
  • Select an option

  • Save pyadav/5982bc8901e1cd1ad4382d59808481b8 to your computer and use it in GitHub Desktop.

Select an option

Save pyadav/5982bc8901e1cd1ad4382d59808481b8 to your computer and use it in GitHub Desktop.
Network Helper for RxJava, OkHttp, Gson
/**
makes a GET call through OkHttp
return an Observable of type defined by clazz
Usage:
NetworkHelper.get(baseUrl, String.class).compose(applySchedulers()).subscribe(s->{
Do Awesome Things Here
})
**/
public static <E> Observable<E> get(final String url, final Class<E> clazz) {
return Observable.create(new Observable.OnSubscribe<E>() {
@Override public void call(Subscriber<? super E> subscriber) {
try {
Request request = new Request.Builder().url(url).get().build();
Response response = BaseApplication.getInstance().okHttpClient.newCall(request).execute();
String responseString = response.body().string();
if (response.isSuccessful() && !subscriber.isUnsubscribed()) {
E result = BaseApplication.getInstance().gson.fromJson(responseString, clazz);
subscriber.onNext(result);
subscriber.onCompleted();
}
} catch (Exception e) {
if (!subscriber.isUnsubscribed()) subscriber.onError(e);
}
}
});
}
<T> Observable.Transformer<T, T> applySchedulers() {
return observable -> observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment