aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2015-01-05 22:46:47 +0100
committerSamuel Tardieu <sam@rfc1149.net>2015-01-05 22:46:47 +0100
commit5527d4197df4666ade81000123147d8cfe0f99a0 (patch)
tree8fa878517ef01de6346f2f8d77ffbe42c12e096a /main/src/cgeo/geocaching/connector
parentbdc21b95df4fc1d5449ae183e2d055ad932ab7c1 (diff)
downloadcgeo-5527d4197df4666ade81000123147d8cfe0f99a0.zip
cgeo-5527d4197df4666ade81000123147d8cfe0f99a0.tar.gz
cgeo-5527d4197df4666ade81000123147d8cfe0f99a0.tar.bz2
Give the raw stream to JSON instead of loading it to a String
Diffstat (limited to 'main/src/cgeo/geocaching/connector')
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCParser.java17
1 files changed, 6 insertions, 11 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java
index a25cba8..928098e 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCParser.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java
@@ -65,6 +65,7 @@ import android.text.Html;
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
@@ -1695,28 +1696,22 @@ public abstract class GCParser {
Log.e("GCParser.loadLogsFromDetails: error " + statusCode + " when requesting log information");
return Observable.empty();
}
- final String rawResponse = Network.getResponseData(response);
- if (rawResponse == null) {
+ final InputStream responseStream = Network.getResponseStream(response);
+ if (responseStream == null) {
Log.e("GCParser.loadLogsFromDetails: unable to read whole response");
return Observable.empty();
}
- return parseLogs(logType != Logs.ALL, rawResponse);
+ return parseLogs(logType != Logs.ALL, responseStream);
}
}).subscribeOn(RxUtils.networkScheduler);
}
- private static Observable<LogEntry> parseLogs(final boolean markAsFriendsLog, final String rawResponse) {
+ private static Observable<LogEntry> parseLogs(final boolean markAsFriendsLog, final InputStream responseStream) {
return Observable.create(new OnSubscribe<LogEntry>() {
@Override
public void call(final Subscriber<? super LogEntry> subscriber) {
- // for non logged in users the log book is not shown
- if (StringUtils.isBlank(rawResponse)) {
- subscriber.onCompleted();
- return;
- }
-
try {
- final ObjectNode resp = (ObjectNode) JsonUtils.reader.readTree(rawResponse);
+ final ObjectNode resp = (ObjectNode) JsonUtils.reader.readTree(responseStream);
if (!resp.path("status").asText().equals("success")) {
Log.e("GCParser.loadLogsFromDetails: status is " + resp.path("status").asText("[absent]"));
subscriber.onCompleted();