diff options
author | Samuel Tardieu <sam@rfc1149.net> | 2015-01-05 22:46:47 +0100 |
---|---|---|
committer | Samuel Tardieu <sam@rfc1149.net> | 2015-01-05 22:46:47 +0100 |
commit | 5527d4197df4666ade81000123147d8cfe0f99a0 (patch) | |
tree | 8fa878517ef01de6346f2f8d77ffbe42c12e096a /main/src | |
parent | bdc21b95df4fc1d5449ae183e2d055ad932ab7c1 (diff) | |
download | cgeo-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')
-rw-r--r-- | main/src/cgeo/geocaching/connector/gc/GCParser.java | 17 |
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(); |