aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-04-05 14:55:40 +0200
committerSamuel Tardieu <sam@rfc1149.net>2014-04-05 18:23:20 +0200
commitcca4c9b0bcc1bd7742d419166fd5cfd5415fde9e (patch)
tree5c88f703e8130e07ff98e0f13277a8fddc44d2b1 /main/src/cgeo/geocaching/connector
parentde71f9ba50bf7ee8f8987402b52912b014c5b460 (diff)
downloadcgeo-cca4c9b0bcc1bd7742d419166fd5cfd5415fde9e.zip
cgeo-cca4c9b0bcc1bd7742d419166fd5cfd5415fde9e.tar.gz
cgeo-cca4c9b0bcc1bd7742d419166fd5cfd5415fde9e.tar.bz2
Do not use AndroidObservable
This lets us return to an unmodified version of RxJava.
Diffstat (limited to 'main/src/cgeo/geocaching/connector')
-rw-r--r--main/src/cgeo/geocaching/connector/gc/RecaptchaHandler.java72
1 files changed, 44 insertions, 28 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/RecaptchaHandler.java b/main/src/cgeo/geocaching/connector/gc/RecaptchaHandler.java
index 934cc88..2fd782c 100644
--- a/main/src/cgeo/geocaching/connector/gc/RecaptchaHandler.java
+++ b/main/src/cgeo/geocaching/connector/gc/RecaptchaHandler.java
@@ -4,12 +4,10 @@ import cgeo.geocaching.R;
import cgeo.geocaching.loaders.RecaptchaReceiver;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.utils.Log;
+import cgeo.geocaching.utils.RxUtils;
import org.apache.commons.io.IOUtils;
-
import rx.Observable;
-import rx.android.observables.AndroidObservable;
-import rx.schedulers.Schedulers;
import rx.functions.Action1;
import rx.functions.Func0;
@@ -39,17 +37,36 @@ public class RecaptchaHandler extends Handler {
}
private void loadChallenge(final ImageView imageView, final View reloadButton) {
- getCaptcha().subscribe(new Action1<Bitmap>() {
+ final Observable<Bitmap> captcha = Observable.defer(new Func0<Observable<? extends Bitmap>>() {
+ @Override
+ public Observable<? extends Bitmap> call() {
+ final String url = "http://www.google.com/recaptcha/api/image?c=" + recaptchaReceiver.getChallenge();
+ final InputStream is = Network.getResponseStream(Network.getRequest(url));
+ if (is != null) {
+ try {
+ final Bitmap img = BitmapFactory.decodeStream(is);
+ return Observable.from(img);
+ } catch (final Exception e) {
+ Log.e("RecaptchaHandler.getCaptcha", e);
+ return Observable.error(e);
+ } finally {
+ IOUtils.closeQuietly(is);
+ }
+ }
+ return Observable.empty();
+ }
+ });
+ RxUtils.subscribeOnIOThenUI(captcha, new Action1<Bitmap>() {
@Override
public void call(final Bitmap bitmap) {
imageView.setImageBitmap(bitmap);
}
}, new Action1<Throwable>() {
- @Override
- public void call(final Throwable throwable) {
- // Do nothing
- }
- });
+ @Override
+ public void call(final Throwable throwable) {
+ // Do nothing
+ }
+ });
reloadButton.setEnabled(true);
}
@@ -89,26 +106,25 @@ public class RecaptchaHandler extends Handler {
}
private Observable<Bitmap> getCaptcha() {
- return AndroidObservable.bindActivity(activity,
- Observable.defer(new Func0<Observable<? extends Bitmap>>() {
- @Override
- public Observable<? extends Bitmap> call() {
- final String url = "http://www.google.com/recaptcha/api/image?c=" + recaptchaReceiver.getChallenge();
- final InputStream is = Network.getResponseStream(Network.getRequest(url));
- if (is != null) {
- try {
- final Bitmap img = BitmapFactory.decodeStream(is);
- return Observable.from(img);
- } catch (final Exception e) {
- Log.e("RecaptchaHandler.getCaptcha", e);
- return Observable.error(e);
- } finally {
- IOUtils.closeQuietly(is);
- }
- }
- return Observable.empty();
+ return Observable.defer(new Func0<Observable<? extends Bitmap>>() {
+ @Override
+ public Observable<? extends Bitmap> call() {
+ final String url = "http://www.google.com/recaptcha/api/image?c=" + recaptchaReceiver.getChallenge();
+ final InputStream is = Network.getResponseStream(Network.getRequest(url));
+ if (is != null) {
+ try {
+ final Bitmap img = BitmapFactory.decodeStream(is);
+ return Observable.from(img);
+ } catch (final Exception e) {
+ Log.e("RecaptchaHandler.getCaptcha", e);
+ return Observable.error(e);
+ } finally {
+ IOUtils.closeQuietly(is);
}
- }).subscribeOn(Schedulers.io()));
+ }
+ return Observable.empty();
+ }
+ });
}
}