Skip to content

Instantly share code, notes, and snippets.

@digitalbuddha
Created January 26, 2016 13:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save digitalbuddha/c13a4ae777c70ea8119c to your computer and use it in GitHub Desktop.
Save digitalbuddha/c13a4ae777c70ea8119c to your computer and use it in GitHub Desktop.
Observable.fromCallable(() -> {
RedditData result = null;
Response response = makeRequest();
String diskStorage = null;
try {
ResponseBody body = response.body();
BufferedSource sourceForDisk = body.source();
MediaType contentType = body.contentType();
Charset charset = contentType != null ? contentType.charset(UTF_8) : UTF_8;
Buffer buffer = sourceForDisk.buffer();
Buffer sourceForParser = buffer.clone();
File file = new File(getContext().getCacheDir(), "file");
BufferedSink sink = Okio.buffer(Okio.sink(file));
sink.writeAll(sourceForDisk.buffer());
InputStreamReader inputStreamReader = new InputStreamReader(sourceForParser.inputStream());
result = new Gson().fromJson(inputStreamReader, RedditData.class);
diskStorage = Okio.buffer(Okio.source(file)).readString(charset);
} catch (IOException e) {
e.printStackTrace();
}
diskStorage=diskStorage;
return result;
}
)
.
subscribeOn(Schedulers.io()
)
.
observeOn(AndroidSchedulers.mainThread()
)
.
subscribe();
}
private Response makeRequest() throws IOException {
Request request = new Request.Builder()
.url("https://www.reddit.com/r/aww/new/.json")
.build();
return new OkHttpClient().newCall(request).execute();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment