JCLOUDS-1005: Percent encode user metadata values

Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/a2e2ff8e
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/a2e2ff8e
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/a2e2ff8e

Branch: refs/heads/master
Commit: a2e2ff8e4f451ad396f8e956d7a2b6327a54333f
Parents: 2ff68fc
Author: Andrew Gaul <[email protected]>
Authored: Thu Jun 23 16:17:13 2016 -0700
Committer: Andrew Gaul <[email protected]>
Committed: Thu Jun 23 20:41:28 2016 -0700

----------------------------------------------------------------------
 .../main/java/org/jclouds/b2/binders/UploadFileBinder.java   | 2 +-
 .../org/jclouds/b2/functions/ParseB2ObjectFromResponse.java  | 8 +++++++-
 2 files changed, 8 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2e2ff8e/providers/b2/src/main/java/org/jclouds/b2/binders/UploadFileBinder.java
----------------------------------------------------------------------
diff --git 
a/providers/b2/src/main/java/org/jclouds/b2/binders/UploadFileBinder.java 
b/providers/b2/src/main/java/org/jclouds/b2/binders/UploadFileBinder.java
index 9384033..23ddf05 100644
--- a/providers/b2/src/main/java/org/jclouds/b2/binders/UploadFileBinder.java
+++ b/providers/b2/src/main/java/org/jclouds/b2/binders/UploadFileBinder.java
@@ -39,7 +39,7 @@ public final class UploadFileBinder implements MapBinder {
             .replaceHeader(HttpHeaders.AUTHORIZATION, 
uploadUrl.authorizationToken())
             .replaceHeader(B2Headers.FILE_NAME, escaper.escape(fileName));
       for (Map.Entry<String, String> entry : fileInfo.entrySet()) {
-         builder.replaceHeader(B2Headers.FILE_INFO_PREFIX + entry.getKey(), 
entry.getValue());
+         builder.replaceHeader(B2Headers.FILE_INFO_PREFIX + entry.getKey(), 
escaper.escape(entry.getValue()));
       }
       return (R) builder.build();
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2e2ff8e/providers/b2/src/main/java/org/jclouds/b2/functions/ParseB2ObjectFromResponse.java
----------------------------------------------------------------------
diff --git 
a/providers/b2/src/main/java/org/jclouds/b2/functions/ParseB2ObjectFromResponse.java
 
b/providers/b2/src/main/java/org/jclouds/b2/functions/ParseB2ObjectFromResponse.java
index 35fcab9..f98e315 100644
--- 
a/providers/b2/src/main/java/org/jclouds/b2/functions/ParseB2ObjectFromResponse.java
+++ 
b/providers/b2/src/main/java/org/jclouds/b2/functions/ParseB2ObjectFromResponse.java
@@ -48,7 +48,13 @@ public final class ParseB2ObjectFromResponse implements 
Function<HttpResponse, B
       ImmutableMap.Builder<String, String> fileInfo = ImmutableMap.builder();
       for (Map.Entry<String, String> entry : from.getHeaders().entries()) {
          if (entry.getKey().regionMatches(true, 0, B2Headers.FILE_INFO_PREFIX, 
0, B2Headers.FILE_INFO_PREFIX.length())) {
-            
fileInfo.put(entry.getKey().substring(B2Headers.FILE_INFO_PREFIX.length()), 
entry.getValue());
+            String value;
+            try {
+               value = URLDecoder.decode(entry.getValue(), "UTF-8");
+            } catch (UnsupportedEncodingException uee) {
+               throw Throwables.propagate(uee);
+            }
+            
fileInfo.put(entry.getKey().substring(B2Headers.FILE_INFO_PREFIX.length()), 
value);
          }
       }
       Date uploadTimestamp = new 
Date(Long.parseLong(from.getFirstHeaderOrNull(B2Headers.UPLOAD_TIMESTAMP)));

Reply via email to