diff options
author | Sam Judd <judds@google.com> | 2014-09-13 11:50:33 -0700 |
---|---|---|
committer | Sam Judd <judds@google.com> | 2014-09-13 15:44:34 -0700 |
commit | 6b082ebd7480c5418c20b1d539bfa16912650c50 (patch) | |
tree | adf75ace92f29572e84dfe70470eec3a9a7f6c7a /integration | |
parent | 051069671413f8b66a1b237a8f682aa6c1b50275 (diff) | |
download | glide-6b082ebd7480c5418c20b1d539bfa16912650c50.tar.gz |
Escape unsafe characters in urls.
Fixes #133
Diffstat (limited to 'integration')
3 files changed, 13 insertions, 7 deletions
diff --git a/integration/volley/src/androidTest/java/com/bumptech/glide/integration/volley/VolleyStreamFetcherServerTest.java b/integration/volley/src/androidTest/java/com/bumptech/glide/integration/volley/VolleyStreamFetcherServerTest.java index 8d50837e..e70c6165 100644 --- a/integration/volley/src/androidTest/java/com/bumptech/glide/integration/volley/VolleyStreamFetcherServerTest.java +++ b/integration/volley/src/androidTest/java/com/bumptech/glide/integration/volley/VolleyStreamFetcherServerTest.java @@ -8,6 +8,7 @@ import com.android.volley.VolleyError; import com.android.volley.toolbox.Volley; import com.bumptech.glide.Priority; import com.bumptech.glide.load.data.DataFetcher; +import com.bumptech.glide.load.model.GlideUrl; import com.squareup.okhttp.mockwebserver.MockResponse; import com.squareup.okhttp.mockwebserver.MockWebServer; import org.junit.After; @@ -196,7 +197,7 @@ public class VolleyStreamFetcherServerTest { return super.get(); } }; - return new VolleyStreamFetcher(requestQueue, url.toString(), requestFuture); + return new VolleyStreamFetcher(requestQueue, new GlideUrl(url.toString()), requestFuture); } private static String isToString(InputStream is) throws IOException { diff --git a/integration/volley/src/main/java/com/bumptech/glide/integration/volley/VolleyStreamFetcher.java b/integration/volley/src/main/java/com/bumptech/glide/integration/volley/VolleyStreamFetcher.java index 8b9e5f92..d78723d8 100644 --- a/integration/volley/src/main/java/com/bumptech/glide/integration/volley/VolleyStreamFetcher.java +++ b/integration/volley/src/main/java/com/bumptech/glide/integration/volley/VolleyStreamFetcher.java @@ -7,24 +7,27 @@ import com.android.volley.Response; import com.android.volley.toolbox.HttpHeaderParser; import com.bumptech.glide.Priority; import com.bumptech.glide.load.data.DataFetcher; +import com.bumptech.glide.load.model.GlideUrl; import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.lang.reflect.Method; /** * A DataFetcher backed by volley for fetching images via http. */ public class VolleyStreamFetcher implements DataFetcher<InputStream> { private final RequestQueue requestQueue; - private final String url; + private final GlideUrl url; private VolleyRequestFuture<InputStream> requestFuture; @SuppressWarnings("unused") - public VolleyStreamFetcher(RequestQueue requestQueue, String url) { + public VolleyStreamFetcher(RequestQueue requestQueue, GlideUrl url) { this(requestQueue, url, null); } - public VolleyStreamFetcher(RequestQueue requestQueue, String url, VolleyRequestFuture<InputStream> requestFuture) { + public VolleyStreamFetcher(RequestQueue requestQueue, GlideUrl url, + VolleyRequestFuture<InputStream> requestFuture) { this.requestQueue = requestQueue; this.url = url; this.requestFuture = requestFuture; @@ -35,7 +38,9 @@ public class VolleyStreamFetcher implements DataFetcher<InputStream> { @Override public InputStream loadData(Priority priority) throws Exception { - GlideRequest request = new GlideRequest(url, requestFuture, glideToVolleyPriority(priority)); + // Make sure the string url safely encodes non ascii characters. + String stringUrl = url.toURL().toString(); + GlideRequest request = new GlideRequest(stringUrl, requestFuture, glideToVolleyPriority(priority)); requestFuture.setRequest(requestQueue.add(request)); @@ -49,7 +54,7 @@ public class VolleyStreamFetcher implements DataFetcher<InputStream> { @Override public String getId() { - return url; + return url.toString(); } @Override diff --git a/integration/volley/src/main/java/com/bumptech/glide/integration/volley/VolleyUrlLoader.java b/integration/volley/src/main/java/com/bumptech/glide/integration/volley/VolleyUrlLoader.java index b08b0224..b2093ef5 100644 --- a/integration/volley/src/main/java/com/bumptech/glide/integration/volley/VolleyUrlLoader.java +++ b/integration/volley/src/main/java/com/bumptech/glide/integration/volley/VolleyUrlLoader.java @@ -67,6 +67,6 @@ public class VolleyUrlLoader implements ModelLoader<GlideUrl, InputStream> { @Override public DataFetcher<InputStream> getResourceFetcher(GlideUrl url, int width, int height) { - return new VolleyStreamFetcher(requestQueue, url.toString(), new VolleyRequestFuture<InputStream>()); + return new VolleyStreamFetcher(requestQueue, url, new VolleyRequestFuture<InputStream>()); } } |