aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoushik Dutta <koushd@gmail.com>2015-02-24 15:31:29 -0800
committerKoushik Dutta <koushd@gmail.com>2015-02-24 15:31:29 -0800
commitfefce9f98217cb8683dd355abecbb57aece4d02d (patch)
treed7d609d457467bb32a5da77052b92bac7a3a8df5
parent453a7f978a0076708ef35037dd2f05a729866c64 (diff)
downloadAndroidAsync-fefce9f98217cb8683dd355abecbb57aece4d02d.tar.gz
AndroidAsync-fefce9f98217cb8683dd355abecbb57aece4d02d.tar.bz2
AndroidAsync-fefce9f98217cb8683dd355abecbb57aece4d02d.zip
b64 images for stetho preview
-rw-r--r--AndroidAsyncStetho/src/com/koushikdutta/async/stetho/NetworkEventReporterWrapper.java25
-rw-r--r--AndroidAsyncStetho/src/com/koushikdutta/async/stetho/StethoMiddleware.java4
2 files changed, 21 insertions, 8 deletions
diff --git a/AndroidAsyncStetho/src/com/koushikdutta/async/stetho/NetworkEventReporterWrapper.java b/AndroidAsyncStetho/src/com/koushikdutta/async/stetho/NetworkEventReporterWrapper.java
index b1c7e58..b826d36 100644
--- a/AndroidAsyncStetho/src/com/koushikdutta/async/stetho/NetworkEventReporterWrapper.java
+++ b/AndroidAsyncStetho/src/com/koushikdutta/async/stetho/NetworkEventReporterWrapper.java
@@ -2,6 +2,9 @@
package com.koushikdutta.async.stetho;
+import android.util.Base64;
+import android.util.Base64OutputStream;
+
import com.facebook.stetho.inspector.network.NetworkEventReporter;
import com.facebook.stetho.inspector.network.NetworkPeerManager;
import com.facebook.stetho.inspector.network.ResponseHandler;
@@ -10,11 +13,14 @@ import com.koushikdutta.async.DataEmitter;
import com.koushikdutta.async.FilteredDataEmitter;
import com.koushikdutta.async.util.StreamUtility;
+import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
+import java.nio.channels.Channels;
import java.nio.channels.FileChannel;
+import java.nio.channels.WritableByteChannel;
import javax.annotation.Nullable;
@@ -74,17 +80,20 @@ class NetworkEventReporterWrapper implements NetworkEventReporter {
return null;
}
- public DataEmitter interpretResponseEmitter(
- final String requestId,
- @Nullable DataEmitter body
- ) {
+ public DataEmitter interpretResponseEmitter(final String requestId, @Nullable DataEmitter body, final boolean b64Encode) {
final NetworkPeerManager peerManager = getPeerManagerIfEnabled();
if (peerManager == null)
return null;
- final FileChannel channel;
+ final WritableByteChannel channel;
try {
- channel = ((FileOutputStream)peerManager.getResponseBodyFileManager().openResponseBodyFile(requestId, false)).getChannel();
+ if (b64Encode) {
+ final Base64OutputStream b64out = new Base64OutputStream(peerManager.getResponseBodyFileManager().openResponseBodyFile(requestId, false), Base64.DEFAULT);
+ channel = Channels.newChannel(b64out);
+ }
+ else {
+ channel = ((FileOutputStream)peerManager.getResponseBodyFileManager().openResponseBodyFile(requestId, false)).getChannel();
+ }
}
catch (IOException e) {
return null;
@@ -112,7 +121,9 @@ class NetworkEventReporterWrapper implements NetworkEventReporter {
copy[i] = original[i].duplicate();
}
try {
- channel.write(copy);
+ for (ByteBuffer c: copy) {
+ channel.write(c);
+ }
}
catch (IOException ignored) {
StreamUtility.closeQuietly(channel);
diff --git a/AndroidAsyncStetho/src/com/koushikdutta/async/stetho/StethoMiddleware.java b/AndroidAsyncStetho/src/com/koushikdutta/async/stetho/StethoMiddleware.java
index 14ec31c..3bf4c4c 100644
--- a/AndroidAsyncStetho/src/com/koushikdutta/async/stetho/StethoMiddleware.java
+++ b/AndroidAsyncStetho/src/com/koushikdutta/async/stetho/StethoMiddleware.java
@@ -189,7 +189,9 @@ public class StethoMiddleware extends SimpleMiddleware {
if (inspect == null)
return;
- DataEmitter emitter = eventReporter.interpretResponseEmitter(inspect.id(), data.bodyEmitter);
+ String ct = data.response.headers().get("Content-Type");
+ boolean isImage = ct != null && ct.startsWith("image/");
+ DataEmitter emitter = eventReporter.interpretResponseEmitter(inspect.id(), data.bodyEmitter, isImage);
if (emitter != null)
data.bodyEmitter = emitter;
}