This is an automated email from the ASF dual-hosted git repository.

nacx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jclouds.git


The following commit(s) were added to refs/heads/master by this push:
     new ca51906  JCLOUDS-1533 - Fix upload with SAS token when blob name 
contains slash (#61)
ca51906 is described below

commit ca5190636a5fc1ffe48d0d6b8087ad160c0b7d80
Author: majaseremet <[email protected]>
AuthorDate: Mon Feb 17 15:28:34 2020 +0100

    JCLOUDS-1533 - Fix upload with SAS token when blob name contains slash (#61)
---
 .../jclouds/azure/storage/filters/SharedKeyLiteAuthentication.java | 7 +++++--
 .../azure/storage/filters/SharedKeyLiteAuthenticationTest.java     | 2 ++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git 
a/providers/azureblob/src/main/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthentication.java
 
b/providers/azureblob/src/main/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthentication.java
index ad9f60d..6405800 100644
--- 
a/providers/azureblob/src/main/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthentication.java
+++ 
b/providers/azureblob/src/main/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthentication.java
@@ -23,6 +23,7 @@ import static org.jclouds.util.Patterns.NEWLINE_PATTERN;
 import static org.jclouds.util.Strings2.toInputStream;
 import org.jclouds.http.Uris.UriBuilder;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -120,8 +121,10 @@ public class SharedKeyLiteAuthentication implements 
HttpRequestFilter {
       String[] parametersArray = cutUri(requestUri); 
       String containerName = parametersArray[1]; 
       UriBuilder endpoint = 
Uris.uriBuilder(storageUrl).appendPath(containerName);
-      if (parametersArray.length == 3) {
-         endpoint.appendPath(parametersArray[2]).query(finalQuery);
+      if (parametersArray.length >= 3) {
+         String[] blobNameParts = Arrays.copyOfRange(parametersArray, 2, 
parametersArray.length);
+         String blobName = Joiner.on("/").join(blobNameParts);
+         endpoint.appendPath(blobName).query(finalQuery);
       } else {
          endpoint.query("restype=container&" + finalQuery);
       }
diff --git 
a/providers/azureblob/src/test/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthenticationTest.java
 
b/providers/azureblob/src/test/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthenticationTest.java
index 5e0c226..29672f4 100644
--- 
a/providers/azureblob/src/test/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthenticationTest.java
+++ 
b/providers/azureblob/src/test/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthenticationTest.java
@@ -62,6 +62,8 @@ public class SharedKeyLiteAuthenticationTest {
                   + 
".blob.core.windows.net/movies/MOV1.avi?comp=block&blockid=BlockId1&timeout=60").build(),
 filterSAS, 
"https://foo.blob.core.windows.net/movies/MOV1.avi?comp=block&blockid=BlockId1&timeout=60&sv=2018-03-28&ss=b&srt=sco&sp=rwdlac&se=2019-02-13T17%3A18%3A22Z&st=2019-02-13T09%3A18%3A22Z&spr=https&sig=sMnaKSD94CzEPeGnWauTT0wBNIn%2B4ySkZO5PEAW7zs%3D"},
             { HttpRequest.builder().method(HttpMethod.PUT).endpoint("https://"; 
+ ACCOUNT
                   + 
".blob.core.windows.net/movies/MOV1.avi?comp=blocklist&timeout=120").build(), 
filterSAS, 
"https://foo.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&timeout=120&sv=2018-03-28&ss=b&srt=sco&sp=rwdlac&se=2019-02-13T17%3A18%3A22Z&st=2019-02-13T09%3A18%3A22Z&spr=https&sig=sMnaKSD94CzEPeGnWauTT0wBNIn%2B4ySkZO5PEAW7zs%3D";
 },
+            { HttpRequest.builder().method(HttpMethod.PUT).endpoint("https://"; 
+ ACCOUNT
+                  + 
".blob.core.windows.net/movies/comedy/MOV1.avi?comp=block&blockid=BlockId1&timeout=60").build(),
 filterSAS, 
"https://foo.blob.core.windows.net/movies/comedy/MOV1.avi?comp=block&blockid=BlockId1&timeout=60&sv=2018-03-28&ss=b&srt=sco&sp=rwdlac&se=2019-02-13T17%3A18%3A22Z&st=2019-02-13T09%3A18%3A22Z&spr=https&sig=sMnaKSD94CzEPeGnWauTT0wBNIn%2B4ySkZO5PEAW7zs%3D"},
             { HttpRequest.builder().method(HttpMethod.GET).endpoint("https://"; 
+ ACCOUNT
                   + ".blob.core.windows.net/movies/MOV1.avi").build(), 
filterSAS, 
"https://foo.blob.core.windows.net/movies/MOV1.avi?sv=2018-03-28&ss=b&srt=sco&sp=rwdlac&se=2019-02-13T17%3A18%3A22Z&st=2019-02-13T09%3A18%3A22Z&spr=https&sig=sMnaKSD94CzEPeGnWauTT0wBNIn%2B4ySkZO5PEAW7zs%3D";
 }, 
             { HttpRequest.builder().method(HttpMethod.GET).endpoint("https://"; 
+ ACCOUNT

Reply via email to