From 9230cc15124319a67e863595e9d1f1fb423ec2ff Mon Sep 17 00:00:00 2001
From: Victor Colin Amador
Date: Fri, 18 Oct 2019 15:32:50 -0700
Subject: [PATCH 01/10] Added UTF-8 encoding for blob names in methods that are
used to build blob clients or manipulate blobs. Also added documentation
where blob names are part of the flow so that the user knows what is
happening in case they are thinking of passing an already encoded name.
---
.../azure/storage/blob/batch/BlobBatch.java | 17 ++++++++++----
.../EncryptedBlobClientBuilder.java | 10 +++++++-
.../azure/storage/blob/BlobClientBuilder.java | 11 ++++++++-
.../blob/BlobContainerAsyncClient.java | 6 ++++-
.../storage/blob/BlobContainerClient.java | 4 ++++
.../com/azure/storage/blob/BlobUrlParts.java | 10 +++++++-
.../blob/specialized/BlobAsyncClientBase.java | 2 ++
.../blob/specialized/BlobClientBase.java | 2 ++
.../SpecializedBlobClientBuilder.java | 23 ++++++++++++++++++-
9 files changed, 76 insertions(+), 9 deletions(-)
diff --git a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
index 8ad8ae49532c..60c5f88eb33f 100644
--- a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
+++ b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
@@ -21,6 +21,7 @@
import com.azure.storage.blob.models.BlobAccessConditions;
import com.azure.storage.blob.models.DeleteSnapshotsOptionType;
import com.azure.storage.blob.models.LeaseAccessConditions;
+import com.azure.storage.common.Utility;
import com.azure.storage.common.policy.SharedKeyCredentialPolicy;
import reactor.core.Disposable;
import reactor.core.Exceptions;
@@ -125,6 +126,8 @@ public final class BlobBatch {
/**
* Adds a delete blob operation to the batch.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code sample
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.deleteBlob#String-String}
@@ -136,12 +139,14 @@ public final class BlobBatch {
* @throws UnsupportedOperationException If this batch has already added an operation of another type.
*/
public Response deleteBlob(String containerName, String blobName) {
- return deleteBlobHelper(String.format("%s/%s", containerName, blobName), null, null);
+ return deleteBlobHelper(String.format("%s/%s", containerName, Utility.urlEncode(blobName)), null, null);
}
/**
* Adds a delete blob operation to the batch.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code sample
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.deleteBlob#String-String-DeleteSnapshotsOptionType-BlobAccessConditions}
@@ -156,7 +161,7 @@ public Response deleteBlob(String containerName, String blobName) {
*/
public Response deleteBlob(String containerName, String blobName,
DeleteSnapshotsOptionType deleteOptions, BlobAccessConditions blobAccessConditions) {
- return deleteBlobHelper(String.format("%s/%s", containerName, blobName), deleteOptions, blobAccessConditions);
+ return deleteBlobHelper(String.format("%s/%s", containerName, Utility.urlEncode(blobName)), deleteOptions, blobAccessConditions);
}
/**
@@ -204,6 +209,8 @@ private Response deleteBlobHelper(String urlPath, DeleteSnapshotsOptionTyp
/**
* Adds a set tier operation to the batch.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code sample
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.setBlobAccessTier#String-String-AccessTier}
@@ -216,12 +223,14 @@ private Response deleteBlobHelper(String urlPath, DeleteSnapshotsOptionTyp
* @throws UnsupportedOperationException If this batch has already added an operation of another type.
*/
public Response setBlobAccessTier(String containerName, String blobName, AccessTier accessTier) {
- return setBlobAccessTierHelper(String.format("%s/%s", containerName, blobName), accessTier, null);
+ return setBlobAccessTierHelper(String.format("%s/%s", containerName, Utility.urlEncode(blobName)), accessTier, null);
}
/**
* Adds a set tier operation to the batch.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code sample
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.setBlobAccessTier#String-String-AccessTier-LeaseAccessConditions}
@@ -236,7 +245,7 @@ public Response setBlobAccessTier(String containerName, String blobName, A
*/
public Response setBlobAccessTier(String containerName, String blobName, AccessTier accessTier,
LeaseAccessConditions leaseAccessConditions) {
- return setBlobAccessTierHelper(String.format("%s/%s", containerName, blobName), accessTier,
+ return setBlobAccessTierHelper(String.format("%s/%s", containerName, Utility.urlEncode(blobName)), accessTier,
leaseAccessConditions);
}
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
index c7501558b0de..2ecb99698948 100644
--- a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
@@ -165,6 +165,8 @@ private AzureBlobStorageImpl constructImpl() {
/**
* Creates a {@link EncryptedBlobClient} based on options set in the Builder.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.specialized.cryptography.EncryptedBlobClientBuilder.buildEncryptedBlobAsyncClient}
@@ -179,6 +181,8 @@ public EncryptedBlobClient buildEncryptedBlobClient() {
/**
* Creates a {@link EncryptedBlobAsyncClient} based on options set in the Builder.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.specialized.cryptography.EncryptedBlobClientBuilder.buildEncryptedBlobClient}
@@ -334,6 +338,8 @@ public EncryptedBlobClientBuilder connectionString(String connectionString) {
* with blobs in the root container, it is best to set the endpoint to the account url and specify the blob name
* separately using the {@link EncryptedBlobClientBuilder#blobName(String) blobName} method.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param endpoint URL of the service
* @return the updated EncryptedBlobClientBuilder object
* @throws IllegalArgumentException If {@code endpoint} is {@code null} or is a malformed URL.
@@ -375,12 +381,14 @@ public EncryptedBlobClientBuilder containerName(String containerName) {
/**
* Sets the name of the blob.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param blobName Name of the blob.
* @return the updated EncryptedBlobClientBuilder object
* @throws NullPointerException If {@code blobName} is {@code null}
*/
public EncryptedBlobClientBuilder blobName(String blobName) {
- this.blobName = Objects.requireNonNull(blobName, "'blobName' cannot be null.");
+ this.blobName = Utility.urlEncode(Objects.requireNonNull(blobName, "'blobName' cannot be null."));
return this;
}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
index d8b21d0147f9..7ec3da35c590 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
@@ -17,6 +17,7 @@
import com.azure.storage.blob.implementation.util.BuilderHelper;
import com.azure.storage.blob.models.CpkInfo;
import com.azure.storage.blob.models.CustomerProvidedKey;
+import com.azure.storage.common.Utility;
import com.azure.storage.common.credentials.SharedKeyCredential;
import com.azure.storage.common.implementation.credentials.SasTokenCredential;
import com.azure.storage.common.implementation.policy.SasTokenCredentialPolicy;
@@ -80,6 +81,8 @@ public BlobClientBuilder() {
* methods such as {@link BlobClient#download(OutputStream) download} and {@link BlobClient#getProperties() get
* properties}, use this when the blob type is unknown.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.BlobClientBuilder.buildClient}
@@ -96,6 +99,8 @@ public BlobClient buildClient() {
* generic blob methods such as {@link BlobAsyncClient#download() download} and {@link
* BlobAsyncClient#getProperties()}, use this when the blob type is unknown.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.BlobClientBuilder.buildAsyncClient}
@@ -235,6 +240,8 @@ public BlobClientBuilder connectionString(String connectionString) {
* with blobs in the root container, it is best to set the endpoint to the account url and specify the blob name
* separately using the {@link BlobClientBuilder#blobName(String) blobName} method.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param endpoint URL of the service
* @return the updated BlobClientBuilder object
* @throws IllegalArgumentException If {@code endpoint} is {@code null} or is a malformed URL.
@@ -276,12 +283,14 @@ public BlobClientBuilder containerName(String containerName) {
/**
* Sets the name of the blob.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param blobName Name of the blob.
* @return the updated BlobClientBuilder object
* @throws NullPointerException If {@code blobName} is {@code null}
*/
public BlobClientBuilder blobName(String blobName) {
- this.blobName = Objects.requireNonNull(blobName, "'blobName' cannot be null.");
+ this.blobName = Utility.urlEncode(Objects.requireNonNull(blobName, "'blobName' cannot be null."));
return this;
}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
index 6188377a8245..10a690a1ddf8 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
@@ -93,6 +93,8 @@ public final class BlobContainerAsyncClient {
* the BlobAsyncClient and then call its WithPipeline method passing in the desired pipeline object. Or, call this
* package's getBlobAsyncClient instead of calling this object's getBlobAsyncClient method.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.BlobContainerAsyncClient.getBlobAsyncClient#String}
@@ -110,6 +112,8 @@ public BlobAsyncClient getBlobAsyncClient(String blobName) {
* the BlobAsyncClient and then call its WithPipeline method passing in the desired pipeline object. Or, call this
* package's getBlobAsyncClient instead of calling this object's getBlobAsyncClient method.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.BlobContainerAsyncClient.getBlobAsyncClient#String-String}
@@ -120,7 +124,7 @@ public BlobAsyncClient getBlobAsyncClient(String blobName) {
*/
public BlobAsyncClient getBlobAsyncClient(String blobName, String snapshot) {
return new BlobAsyncClient(new AzureBlobStorageBuilder()
- .url(Utility.appendToURLPath(getBlobContainerUrl(), blobName).toString())
+ .url(Utility.appendToURLPath(getBlobContainerUrl(), Utility.urlEncode(blobName)).toString())
.pipeline(azureBlobStorage.getHttpPipeline())
.build(), snapshot, customerProvidedKey, accountName);
}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerClient.java
index 5aaf6d475e58..2991a6bcf033 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerClient.java
@@ -63,6 +63,8 @@ public final class BlobContainerClient {
* BlobClient and then call its WithPipeline method passing in the desired pipeline object. Or, call this package's
* getBlobAsyncClient instead of calling this object's getBlobAsyncClient method.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param blobName A {@code String} representing the name of the blob.
*
* Code Samples
@@ -80,6 +82,8 @@ public BlobClient getBlobClient(String blobName) {
* BlobClient and then call its WithPipeline method passing in the desired pipeline object. Or, call this package's
* getBlobAsyncClient instead of calling this object's getBlobAsyncClient method.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.BlobContainerClient.getBlobClient#String-String}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
index 73e1eb274081..86ec493c0857 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
@@ -123,6 +123,8 @@ public BlobUrlParts setContainerName(String containerName) {
/**
* Gets the blob name that will be used as part of the URL path.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @return the blob name.
*/
public String getBlobName() {
@@ -132,11 +134,13 @@ public String getBlobName() {
/**
* Sets the blob name that will be used as part of the URL path.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param blobName The blob name.
* @return the updated BlobUrlParts object.
*/
public BlobUrlParts setBlobName(String blobName) {
- this.blobName = blobName;
+ this.blobName = Utility.urlEncode(blobName);
return this;
}
@@ -251,6 +255,8 @@ public URL toURL() throws MalformedURLException {
* parameters. Any other query parameters remain in the UnparsedParams field. This method overwrites all fields
* in the BlobUrlParts object.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param url The string URL to be parsed.
* @param logger Logger associated to the calling class to log a {@link MalformedURLException}.
* @return A {@link BlobUrlParts} object containing all the components of a BlobURL.
@@ -276,6 +282,8 @@ public static BlobUrlParts parse(String url, ClientLogger logger) {
* is no path element for the container, the name of this blob in the root container will be set as the
* containerName field in the resulting {@code BlobURLParts}.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param url The {@code URL} to be parsed.
* @return A {@link BlobUrlParts} object containing all the components of a BlobURL.
*/
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
index 7cb00759fca6..62e0292a5b50 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
@@ -137,6 +137,8 @@ public final String getContainerName() {
/**
* Get the blob name.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.specialized.BlobAsyncClientBase.getBlobName}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java
index c213f956012b..431c28f17d33 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java
@@ -101,6 +101,8 @@ public final String getContainerName() {
/**
* Get the blob name.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.specialized.BlobClientBase.getBlobName}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
index 66c5fdf0d9a0..a69e292b8b10 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
@@ -23,6 +23,7 @@
import com.azure.storage.blob.models.CustomerProvidedKey;
import com.azure.storage.blob.models.LeaseAccessConditions;
import com.azure.storage.blob.models.PageRange;
+import com.azure.storage.common.Utility;
import com.azure.storage.common.credentials.SharedKeyCredential;
import com.azure.storage.common.implementation.credentials.SasTokenCredential;
import com.azure.storage.common.implementation.policy.SasTokenCredentialPolicy;
@@ -82,6 +83,8 @@ public final class SpecializedBlobClientBuilder {
* append blob specific operations such as {@link AppendBlobClient#appendBlock(InputStream, long) append block},
* only use this when the blob is known to be an append blob.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @return a {@link AppendBlobClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -94,6 +97,8 @@ public AppendBlobClient buildAppendBlobClient() {
* perform append blob specific operations such as {@link AppendBlobAsyncClient#appendBlock(Flux, long) append
* blob}, only use this when the blob is known to be an append blob.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @return a {@link AppendBlobAsyncClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -107,6 +112,8 @@ public AppendBlobAsyncClient buildAppendBlobAsyncClient() {
* blob specific operations such as {@link BlockBlobClient#stageBlock(String, InputStream, long) stage block} and
* {@link BlockBlobClient#commitBlockList(List)}, only use this when the blob is known to be a block blob.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @return a {@link BlockBlobClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -121,6 +128,8 @@ public BlockBlobClient buildBlockBlobClient() {
* LeaseAccessConditions) stage block} and {@link BlockBlobAsyncClient#commitBlockList(List) commit block list},
* only use this when the blob is known to be a block blob.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @return a {@link BlockBlobAsyncClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -134,6 +143,8 @@ public BlockBlobAsyncClient buildBlockBlobAsyncClient() {
* {@link PageBlobClient#clearPages(PageRange) clear pages}, only use this when the blob is known to be a page
* blob.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @return a {@link PageBlobClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -147,6 +158,8 @@ public PageBlobClient buildPageBlobClient() {
* pages} and {@link PageBlobAsyncClient#clearPages(PageRange) clear pages}, only use this when the blob is known to
* be a page blob.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @return a {@link PageBlobAsyncClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -215,6 +228,8 @@ public SpecializedBlobClientBuilder blobAsyncClient(BlobAsyncClientBase blobAsyn
/**
* Configures the builder based on the {@link BlobContainerClient} and appends the blob name to the container's URL.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param blobContainerClient The {@code ContainerClient} used to configure this builder.
* @param blobName Name of the blob.
* @return the updated SpecializedBlobClientBuilder object.
@@ -231,6 +246,8 @@ public SpecializedBlobClientBuilder containerClient(BlobContainerClient blobCont
* Configures the builder based on the {@link BlobContainerAsyncClient} and appends the blob name to the container's
* URL.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param blobContainerAsyncClient The {@code ContainerAsyncClient} used to configure this builder.
* @param blobName Name of the blob.
* @return the updated SpecializedBlobClientBuilder object.
@@ -247,6 +264,8 @@ public SpecializedBlobClientBuilder containerAsyncClient(BlobContainerAsyncClien
/**
* Sets the service endpoint, additionally parses it for information (SAS token, container name, blob name)
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param endpoint URL of the service
* @return the updated SpecializedBlobClientBuilder object
* @throws IllegalArgumentException If {@code endpoint} is {@code null} or is a malformed URL.
@@ -385,12 +404,14 @@ public SpecializedBlobClientBuilder containerName(String containerName) {
/**
* Sets the name of the blob.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param blobName Name of the blob.
* @return the updated SpecializedBlobClientBuilder object
* @throws NullPointerException If {@code blobName} is {@code null}
*/
public SpecializedBlobClientBuilder blobName(String blobName) {
- this.blobName = Objects.requireNonNull(blobName, "'blobName' cannot be null.");
+ this.blobName = Utility.urlEncode(Objects.requireNonNull(blobName, "'blobName' cannot be null."));
return this;
}
From a665c1afc2f70f62bbaeba7dc7e31e2e78070dc7 Mon Sep 17 00:00:00 2001
From: Victor Colin Amador
Date: Sun, 20 Oct 2019 17:27:01 -0700
Subject: [PATCH 02/10] Added missing comments about encryption to the Javadoc
of some classes. Removed the use of the Utility.urlEncoder() in a couple
methods where it was not necessary and would actually cause double encoding.
Added one use of said method to BlobAsyncClient.
---
.../specialized/cryptography/EncryptedBlobAsyncClient.java | 2 ++
.../specialized/cryptography/EncryptedBlobClientBuilder.java | 2 +-
.../main/java/com/azure/storage/blob/BlobAsyncClient.java | 4 ++++
.../src/main/java/com/azure/storage/blob/BlobUrlParts.java | 2 ++
.../storage/blob/specialized/AppendBlobAsyncClient.java | 2 ++
.../azure/storage/blob/specialized/BlobAsyncClientBase.java | 5 ++++-
.../azure/storage/blob/specialized/BlockBlobAsyncClient.java | 2 ++
.../azure/storage/blob/specialized/PageBlobAsyncClient.java | 2 ++
.../blob/specialized/SpecializedBlobClientBuilder.java | 2 +-
9 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobAsyncClient.java b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobAsyncClient.java
index 0dd72082f2c4..b69798764279 100644
--- a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobAsyncClient.java
+++ b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobAsyncClient.java
@@ -86,6 +86,8 @@ public class EncryptedBlobAsyncClient extends BlobAsyncClient {
/**
* Package-private constructor for use by {@link EncryptedBlobClientBuilder}.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
index 0b6d17f4e444..942933a54984 100644
--- a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
@@ -144,7 +144,7 @@ public EncryptedBlobAsyncClient buildEncryptedBlobAsyncClient() {
BlobServiceVersion serviceVersion = version != null ? version : BlobServiceVersion.getLatest();
return new EncryptedBlobAsyncClient(getHttpPipeline(serviceVersion),
- String.format("%s/%s/%s", endpoint, containerName, Utility.urlEncode(blobName)), serviceVersion, accountName, containerName,
+ String.format("%s/%s/%s", endpoint, containerName, blobName), serviceVersion, accountName, containerName,
blobName, snapshot, keyWrapper, keyWrapAlgorithm);
}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobAsyncClient.java
index 876912c56beb..83c239fb6bf1 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobAsyncClient.java
@@ -76,6 +76,8 @@ public class BlobAsyncClient extends BlobAsyncClientBase {
/**
* Package-private constructor for use by {@link BlobClientBuilder}.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
@@ -94,6 +96,8 @@ protected BlobAsyncClient(HttpPipeline pipeline, String url, BlobServiceVersion
/**
* Creates a new {@link BlobAsyncClient} linked to the {@code snapshot} of this blob resource.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param snapshot the identifier for a specific snapshot of this blob
* @return a {@link BlobAsyncClient} used to interact with the specific snapshot.
*/
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
index 8c702354c922..d4942a3c9f83 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
@@ -215,6 +215,8 @@ public BlobUrlParts setUnparsedParameters(Map unparsedParamete
/**
* Converts the blob URL parts to a {@link URL}.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @return A {@code URL} to the blob resource composed of all the elements in this object.
* @throws IllegalStateException The fields present on the BlobUrlParts object were insufficient to construct a
* valid URL or were ill-formatted.
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/AppendBlobAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/AppendBlobAsyncClient.java
index 176d0235244f..0d1743717209 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/AppendBlobAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/AppendBlobAsyncClient.java
@@ -73,6 +73,8 @@ public final class AppendBlobAsyncClient extends BlobAsyncClientBase {
/**
* Package-private constructor for use by {@link SpecializedBlobClientBuilder}.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
index 72240329a359..d489909e19c2 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
@@ -38,6 +38,7 @@
import com.azure.storage.blob.models.ReliableDownloadOptions;
import com.azure.storage.blob.models.SourceModifiedAccessConditions;
import com.azure.storage.blob.models.StorageAccountInfo;
+import com.azure.storage.common.Utility;
import com.azure.storage.common.implementation.Constants;
import com.azure.storage.common.implementation.StorageImplUtils;
import reactor.core.publisher.Flux;
@@ -91,6 +92,8 @@ public class BlobAsyncClientBase {
/**
* Package-private constructor for use by {@link SpecializedBlobClientBuilder}.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
@@ -112,7 +115,7 @@ protected BlobAsyncClientBase(HttpPipeline pipeline, String url, BlobServiceVers
this.accountName = accountName;
this.containerName = containerName;
- this.blobName = blobName;
+ this.blobName = Utility.urlEncode(blobName);
this.snapshot = snapshot;
this.customerProvidedKey = customerProvidedKey;
}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlockBlobAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlockBlobAsyncClient.java
index 23de1d1e4bbb..4f6483008c9f 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlockBlobAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlockBlobAsyncClient.java
@@ -75,6 +75,8 @@ public final class BlockBlobAsyncClient extends BlobAsyncClientBase {
/**
* Package-private constructor for use by {@link SpecializedBlobClientBuilder}.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/PageBlobAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/PageBlobAsyncClient.java
index fc8d95cdeb67..d2cae07088c3 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/PageBlobAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/PageBlobAsyncClient.java
@@ -75,6 +75,8 @@ public final class PageBlobAsyncClient extends BlobAsyncClientBase {
/**
* Package-private constructor for use by {@link SpecializedBlobClientBuilder}.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
index 91a5db7b8123..f77e6b3a6a86 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
@@ -223,7 +223,7 @@ private BlobServiceVersion getServiceVersion() {
}
private String getUrl(String containerName) {
- return String.format("%s/%s/%s", endpoint, containerName, Utility.urlEncoder(blobName));
+ return String.format("%s/%s/%s", endpoint, containerName, blobName);
}
/**
From 1227465aa773923f6e2145c9060c164b765c540d Mon Sep 17 00:00:00 2001
From: Victor Colin Amador
Date: Sun, 20 Oct 2019 22:57:23 -0700
Subject: [PATCH 03/10] Changed a few couple Groovy tests that were failing
because the expected session records did not account for the newly added
encoding
---
.../java/com/azure/storage/blob/ContainerAPITest.groovy | 7 ++++---
.../ContainerAPITestcreateurlspecialchars[0].json | 8 ++++----
.../ContainerAPITestcreateurlspecialchars[1].json | 8 ++++----
.../ContainerAPITestcreateurlspecialchars[2].json | 8 ++++----
.../ContainerAPITestlistblobshierdelim.json | 6 +++---
5 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy
index 83f29f5cfe63..b83f2466cced 100644
--- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy
+++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy
@@ -7,6 +7,7 @@ import com.azure.core.http.rest.Response
import com.azure.storage.blob.models.*
import com.azure.storage.blob.specialized.AppendBlobClient
import com.azure.storage.blob.specialized.BlobClientBase
+import com.azure.storage.common.Utility
import spock.lang.Unroll
import java.time.Duration
@@ -1165,9 +1166,9 @@ class ContainerAPITest extends APISpec {
def blobs = cc.listBlobs().iterator()
then:
- blobs.next().getName() == name
- blobs.next().getName() == name + "2"
- blobs.next().getName() == name + "3"
+ Utility.urlDecode(blobs.next().getName()) == name
+ Utility.urlDecode(blobs.next().getName()) == name + "2"
+ Utility.urlDecode(blobs.next().getName()) == name + "3"
where:
name | _
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[0].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[0].json
index 951375b570ff..039dfab8767e 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[0].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[0].json
@@ -22,7 +22,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az[]",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az%5B%5D",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
@@ -44,7 +44,7 @@
"Exception" : null
}, {
"Method" : "HEAD",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az[]",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az%5B%5D",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
@@ -73,7 +73,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az[]2",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az%5B%5D2",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
@@ -95,7 +95,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az[]3",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az%5B%5D3",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[1].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[1].json
index 487c1def26a7..d2f3e1ac0a1b 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[1].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[1].json
@@ -22,7 +22,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello/world",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello%2Fworld",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
@@ -44,7 +44,7 @@
"Exception" : null
}, {
"Method" : "HEAD",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello/world",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello%2Fworld",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
@@ -73,7 +73,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello/world2",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello%2Fworld2",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
@@ -95,7 +95,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello/world3",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello%2Fworld3",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[2].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[2].json
index f22e0ebbd87a..c0713d7b0ada 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[2].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[2].json
@@ -22,7 +22,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello&world",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello%26world",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
@@ -44,7 +44,7 @@
"Exception" : null
}, {
"Method" : "HEAD",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello&world",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello%26world",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
@@ -73,7 +73,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello&world2",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello%26world2",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
@@ -95,7 +95,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello&world3",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello%26world3",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestlistblobshierdelim.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestlistblobshierdelim.json
index 46ba0ea8f2ed..1e9eaf15eec3 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestlistblobshierdelim.json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestlistblobshierdelim.json
@@ -44,7 +44,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim0035927cc5509b2b374c9596/b/a",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim0035927cc5509b2b374c9596/b%2Fa",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
@@ -88,7 +88,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim0035927cc5509b2b374c9596/d/a",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim0035927cc5509b2b374c9596/d%2Fa",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
@@ -154,7 +154,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim0035927cc5509b2b374c9596/g/a",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim0035927cc5509b2b374c9596/g%2Fa",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
From 55ac267bfd26b6398729c27706ec3eaf8609a601 Mon Sep 17 00:00:00 2001
From: Victor Colin Amador
Date: Sun, 20 Oct 2019 23:54:18 -0700
Subject: [PATCH 04/10] Removed a call to Utility.urlEncode() in
BLobContainerAsyncClient that would make blob URLs to be encoded twice.
---
.../java/com/azure/storage/blob/BlobContainerAsyncClient.java | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
index 27b99285e25f..12cd51872781 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
@@ -30,7 +30,6 @@
import com.azure.storage.blob.models.PublicAccessType;
import com.azure.storage.blob.models.StorageAccountInfo;
import com.azure.storage.common.implementation.StorageImplUtils;
-import com.azure.storage.common.Utility;
import reactor.core.publisher.Mono;
import java.time.Duration;
@@ -144,7 +143,7 @@ public BlobAsyncClient getBlobAsyncClient(String blobName) {
*/
public BlobAsyncClient getBlobAsyncClient(String blobName, String snapshot) {
return new BlobAsyncClient(getHttpPipeline(),
- StorageImplUtils.appendToUrlPath(getBlobContainerUrl(), Utility.urlEncode(blobName)).toString(), getServiceVersion(),
+ StorageImplUtils.appendToUrlPath(getBlobContainerUrl(), blobName).toString(), getServiceVersion(),
getAccountName(), getBlobContainerName(), blobName, snapshot, getCustomerProvidedKey());
}
From b18fbedd1d40c5f7c561840fc0e11f5e5c2ce580 Mon Sep 17 00:00:00 2001
From: Victor Colin Amador
Date: Mon, 21 Oct 2019 00:12:34 -0700
Subject: [PATCH 05/10] Broke a couple lines in BlobBatch into two parts to
comply with the code style guidelines.
---
.../main/java/com/azure/storage/blob/batch/BlobBatch.java | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
index 31773281af8c..367e969465f1 100644
--- a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
+++ b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
@@ -225,7 +225,8 @@ private Response deleteBlobHelper(String urlPath, DeleteSnapshotsOptionTyp
* @throws UnsupportedOperationException If this batch has already added an operation of another type.
*/
public Response setBlobAccessTier(String containerName, String blobName, AccessTier accessTier) {
- return setBlobAccessTierHelper(String.format(PATH_TEMPLATE, containerName, Utility.urlEncode(blobName)), accessTier, null);
+ return setBlobAccessTierHelper(String.format(PATH_TEMPLATE, containerName, Utility.urlEncode(blobName)),
+ accessTier,null);
}
/**
@@ -247,8 +248,8 @@ public Response setBlobAccessTier(String containerName, String blobName, A
*/
public Response setBlobAccessTier(String containerName, String blobName, AccessTier accessTier,
LeaseAccessConditions leaseAccessConditions) {
- return setBlobAccessTierHelper(String.format(PATH_TEMPLATE, containerName, Utility.urlEncode(blobName)), accessTier,
- leaseAccessConditions);
+ return setBlobAccessTierHelper(String.format(PATH_TEMPLATE, containerName, Utility.urlEncode(blobName)),
+ accessTier, leaseAccessConditions);
}
/**
From 009d5ab4527b57d3a419b97ffebe966a3a1ae2ef Mon Sep 17 00:00:00 2001
From: Victor Colin Amador
Date: Mon, 21 Oct 2019 00:31:56 -0700
Subject: [PATCH 06/10] Added missing space to a line in BlobBatch. It was
flagged by the CI style checker.
---
.../src/main/java/com/azure/storage/blob/batch/BlobBatch.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
index 367e969465f1..7de68fb3e970 100644
--- a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
+++ b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
@@ -226,7 +226,7 @@ private Response deleteBlobHelper(String urlPath, DeleteSnapshotsOptionTyp
*/
public Response setBlobAccessTier(String containerName, String blobName, AccessTier accessTier) {
return setBlobAccessTierHelper(String.format(PATH_TEMPLATE, containerName, Utility.urlEncode(blobName)),
- accessTier,null);
+ accessTier, null);
}
/**
From 995e411215e0a34309418441ad4d3d1af83fbd62 Mon Sep 17 00:00:00 2001
From: Victor Colin Amador
Date: Mon, 21 Oct 2019 14:57:34 -0700
Subject: [PATCH 07/10] Fixed an issue that made some test cases fail: blobName
needs to be encoded when putting together the blobUrl that is passed as a a
constructor argument for specialized blob clients. Added blobName decoding
before encoding it so that if users pass encoded names we can properly deal
with them; little to no overhead was added by this.
---
.../azure/storage/blob/batch/BlobBatch.java | 15 +-
.../EncryptedBlobClientBuilder.java | 3 +-
.../azure/storage/blob/BlobClientBuilder.java | 3 +-
.../blob/BlobContainerAsyncClient.java | 7 +-
.../com/azure/storage/blob/BlobUrlParts.java | 2 +-
.../blob/specialized/BlobAsyncClientBase.java | 2 +-
.../SpecializedBlobClientBuilder.java | 3 +-
.../storage/blob/ContainerAPITest.groovy | 14 +-
...tainerAPITestcreateurlspecialchars[0].json | 122 ++++++------
...tainerAPITestcreateurlspecialchars[1].json | 122 ++++++------
...tainerAPITestcreateurlspecialchars[2].json | 122 ++++++------
...tainerAPITestcreateurlspecialchars[3].json | 184 ++++++++++++++++++
...tainerAPITestcreateurlspecialchars[4].json | 184 ++++++++++++++++++
...tainerAPITestcreateurlspecialchars[5].json | 184 ++++++++++++++++++
14 files changed, 762 insertions(+), 205 deletions(-)
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[3].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[4].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[5].json
diff --git a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
index 7de68fb3e970..af08494bdbf7 100644
--- a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
+++ b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
@@ -140,7 +140,8 @@ public final class BlobBatch {
* @throws UnsupportedOperationException If this batch has already added an operation of another type.
*/
public Response deleteBlob(String containerName, String blobName) {
- return deleteBlobHelper(String.format(PATH_TEMPLATE, containerName, Utility.urlEncode(blobName)), null, null);
+ return deleteBlobHelper(String.format(PATH_TEMPLATE, containerName,
+ Utility.urlEncode(Utility.urlDecode(blobName))), null, null);
}
/**
@@ -162,8 +163,8 @@ public Response deleteBlob(String containerName, String blobName) {
*/
public Response deleteBlob(String containerName, String blobName,
DeleteSnapshotsOptionType deleteOptions, BlobAccessConditions blobAccessConditions) {
- return deleteBlobHelper(String.format(PATH_TEMPLATE, containerName, Utility.urlEncode(blobName)),
- deleteOptions, blobAccessConditions);
+ return deleteBlobHelper(String.format(PATH_TEMPLATE, containerName,
+ Utility.urlEncode(Utility.urlDecode(blobName))), deleteOptions, blobAccessConditions);
}
/**
@@ -225,8 +226,8 @@ private Response deleteBlobHelper(String urlPath, DeleteSnapshotsOptionTyp
* @throws UnsupportedOperationException If this batch has already added an operation of another type.
*/
public Response setBlobAccessTier(String containerName, String blobName, AccessTier accessTier) {
- return setBlobAccessTierHelper(String.format(PATH_TEMPLATE, containerName, Utility.urlEncode(blobName)),
- accessTier, null);
+ return setBlobAccessTierHelper(String.format(PATH_TEMPLATE, containerName,
+ Utility.urlEncode(Utility.urlDecode(blobName))), accessTier, null);
}
/**
@@ -248,8 +249,8 @@ public Response setBlobAccessTier(String containerName, String blobName, A
*/
public Response setBlobAccessTier(String containerName, String blobName, AccessTier accessTier,
LeaseAccessConditions leaseAccessConditions) {
- return setBlobAccessTierHelper(String.format(PATH_TEMPLATE, containerName, Utility.urlEncode(blobName)),
- accessTier, leaseAccessConditions);
+ return setBlobAccessTierHelper(String.format(PATH_TEMPLATE, containerName,
+ Utility.urlEncode(Utility.urlDecode(blobName))), accessTier, leaseAccessConditions);
}
/**
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
index 942933a54984..db32b194f894 100644
--- a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
@@ -379,7 +379,8 @@ public EncryptedBlobClientBuilder containerName(String containerName) {
* @throws NullPointerException If {@code blobName} is {@code null}
*/
public EncryptedBlobClientBuilder blobName(String blobName) {
- this.blobName = Utility.urlEncode(Objects.requireNonNull(blobName, "'blobName' cannot be null."));
+ this.blobName = Utility.urlEncode(Utility.urlDecode(Objects.requireNonNull(blobName,
+ "'blobName' cannot be null.")));
return this;
}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
index 69fb3281a6cc..d748f0548e2b 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
@@ -306,7 +306,8 @@ public BlobClientBuilder containerName(String containerName) {
* @throws NullPointerException If {@code blobName} is {@code null}
*/
public BlobClientBuilder blobName(String blobName) {
- this.blobName = Utility.urlEncode(Objects.requireNonNull(blobName, "'blobName' cannot be null."));
+ this.blobName = Utility.urlEncode(Utility.urlDecode(Objects.requireNonNull(blobName,
+ "'blobName' cannot be null.")));
return this;
}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
index 12cd51872781..3ade2c8c58a2 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
@@ -29,6 +29,7 @@
import com.azure.storage.blob.models.ModifiedAccessConditions;
import com.azure.storage.blob.models.PublicAccessType;
import com.azure.storage.blob.models.StorageAccountInfo;
+import com.azure.storage.common.Utility;
import com.azure.storage.common.implementation.StorageImplUtils;
import reactor.core.publisher.Mono;
@@ -142,9 +143,9 @@ public BlobAsyncClient getBlobAsyncClient(String blobName) {
* @return A new {@link BlobAsyncClient} object which references the blob with the specified name in this container.
*/
public BlobAsyncClient getBlobAsyncClient(String blobName, String snapshot) {
- return new BlobAsyncClient(getHttpPipeline(),
- StorageImplUtils.appendToUrlPath(getBlobContainerUrl(), blobName).toString(), getServiceVersion(),
- getAccountName(), getBlobContainerName(), blobName, snapshot, getCustomerProvidedKey());
+ return new BlobAsyncClient(getHttpPipeline(), StorageImplUtils.appendToUrlPath(getBlobContainerUrl(),
+ Utility.urlEncode(Utility.urlDecode(blobName))).toString(), getServiceVersion(), getAccountName(),
+ getBlobContainerName(), blobName, snapshot, getCustomerProvidedKey());
}
/**
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
index d4942a3c9f83..9598b3b604f1 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
@@ -146,7 +146,7 @@ public String getBlobName() {
* @return the updated BlobUrlParts object.
*/
public BlobUrlParts setBlobName(String blobName) {
- this.blobName = Utility.urlEncode(blobName);
+ this.blobName = Utility.urlEncode(Utility.urlDecode(blobName));
return this;
}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
index d489909e19c2..2c42b839bd0a 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
@@ -115,7 +115,7 @@ protected BlobAsyncClientBase(HttpPipeline pipeline, String url, BlobServiceVers
this.accountName = accountName;
this.containerName = containerName;
- this.blobName = Utility.urlEncode(blobName);
+ this.blobName = Utility.urlEncode(Utility.urlDecode(blobName));
this.snapshot = snapshot;
this.customerProvidedKey = customerProvidedKey;
}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
index f77e6b3a6a86..e3df550e3cc5 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
@@ -457,7 +457,8 @@ public SpecializedBlobClientBuilder containerName(String containerName) {
* @throws NullPointerException If {@code blobName} is {@code null}
*/
public SpecializedBlobClientBuilder blobName(String blobName) {
- this.blobName = Utility.urlEncode(Objects.requireNonNull(blobName, "'blobName' cannot be null."));
+ this.blobName = Utility.urlEncode(Utility.urlDecode(Objects.requireNonNull(blobName,
+ "'blobName' cannot be null.")));
return this;
}
diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy
index b83f2466cced..d268056fe50b 100644
--- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy
+++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy
@@ -1171,13 +1171,13 @@ class ContainerAPITest extends APISpec {
Utility.urlDecode(blobs.next().getName()) == name + "3"
where:
- name | _
- // "中文" | _ TODO: requires blob name to be url encoded, deferred for post preview-1, storage team to decide on encoding story across SDKS
- "az[]" | _
- // "hello world" | _ TODO: see previous TODO
- "hello/world" | _
- "hello&world" | _
- // "!*'();:@&=+\$,/?#[]" | _ TODO: see previous TODO
+ name | _
+ "中文" | _
+ "az[]" | _
+ "hello world" | _
+ "hello/world" | _
+ "hello&world" | _
+ "!*'();:@&=+\$,/?#[]" | _
}
def "Root explicit"() {
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[0].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[0].json
index 039dfab8767e..3cdfb8b8ec0e 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[0].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[0].json
@@ -1,54 +1,54 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0381340b62612cae434cfd?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "6a560916-1292-4713-93ee-a96529f51d70"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "63006b82-297b-43e0-9be2-c03a6be15182"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D751ADFEE642C7",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "ETag" : "0x8D7566CCE5A759E",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:41 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "807451f2-501e-002e-3e96-83b0b1000000",
- "Date" : "Tue, 15 Oct 2019 20:26:43 GMT",
- "x-ms-client-request-id" : "6a560916-1292-4713-93ee-a96529f51d70"
+ "x-ms-request-id" : "3ebe424a-f01e-0105-1b55-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:41 GMT",
+ "x-ms-client-request-id" : "63006b82-297b-43e0-9be2-c03a6be15182"
},
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az%5B%5D",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0381340b62612cae434cfd/%E4%B8%AD%E6%96%87",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "aaf7a2a8-e5ae-49e1-a8a8-7d2d28e98620"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "edcc4484-db69-4e09-96b1-f458b684f86f"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D751ADFEECA5D6",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "ETag" : "0x8D7566CCE8DD94C",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:41 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "69f956f1-c01e-012f-1796-83f719000000",
+ "x-ms-request-id" : "3ebe4283-f01e-0105-4955-88825c000000",
"x-ms-request-server-encrypted" : "true",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "aaf7a2a8-e5ae-49e1-a8a8-7d2d28e98620"
+ "Date" : "Mon, 21 Oct 2019 21:22:41 GMT",
+ "x-ms-client-request-id" : "edcc4484-db69-4e09-96b1-f458b684f86f"
},
"Exception" : null
}, {
"Method" : "HEAD",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az%5B%5D",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0381340b62612cae434cfd/%E4%B8%AD%E6%96%87",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "6da67fac-dd7c-49ac-8f10-9c56916b0c85"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "fa79c750-66c9-41c0-8ea7-251920ab893e"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -56,75 +56,75 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"x-ms-lease-state" : "available",
"x-ms-blob-committed-block-count" : "0",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:41 GMT",
"retry-after" : "0",
"StatusCode" : "200",
- "Date" : "Tue, 15 Oct 2019 20:26:43 GMT",
+ "Date" : "Mon, 21 Oct 2019 21:22:41 GMT",
"x-ms-blob-type" : "AppendBlob",
"Accept-Ranges" : "bytes",
"x-ms-server-encrypted" : "true",
- "ETag" : "0x8D751ADFEECA5D6",
- "x-ms-creation-time" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "ETag" : "0x8D7566CCE8DD94C",
+ "x-ms-creation-time" : "Mon, 21 Oct 2019 21:22:41 GMT",
"Content-Length" : "0",
- "x-ms-request-id" : "80745218-501e-002e-6196-83b0b1000000",
- "x-ms-client-request-id" : "6da67fac-dd7c-49ac-8f10-9c56916b0c85",
+ "x-ms-request-id" : "3ebe42a5-f01e-0105-6555-88825c000000",
+ "x-ms-client-request-id" : "fa79c750-66c9-41c0-8ea7-251920ab893e",
"Content-Type" : "application/octet-stream"
},
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az%5B%5D2",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0381340b62612cae434cfd/%E4%B8%AD%E6%96%872",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "ef5027e1-307a-458d-a919-50340620f7a0"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "19ccf569-e491-4dcb-ba91-27bf7f919f9c"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D751ADFEF904EE",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "ETag" : "0x8D7566CCEB47D93",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:42 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "69f9574b-c01e-012f-6996-83f719000000",
+ "x-ms-request-id" : "3ebe42c7-f01e-0105-7e55-88825c000000",
"x-ms-request-server-encrypted" : "true",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "ef5027e1-307a-458d-a919-50340620f7a0"
+ "Date" : "Mon, 21 Oct 2019 21:22:41 GMT",
+ "x-ms-client-request-id" : "19ccf569-e491-4dcb-ba91-27bf7f919f9c"
},
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f/az%5B%5D3",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0381340b62612cae434cfd/%E4%B8%AD%E6%96%873",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "fac65889-6975-4962-b0db-dcab9955436a",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "f78ef54b-45ac-4440-ac56-5b0d4beba290",
"Content-Type" : "application/octet-stream"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"x-ms-content-crc64" : "6RYQPwaVsyQ=",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:42 GMT",
"retry-after" : "0",
"StatusCode" : "201",
"x-ms-request-server-encrypted" : "true",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "Date" : "Mon, 21 Oct 2019 21:22:41 GMT",
"Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
- "ETag" : "0x8D751ADFF00CF09",
+ "ETag" : "0x8D7566CCECC9F5A",
"Content-Length" : "0",
- "x-ms-request-id" : "80745237-501e-002e-7d96-83b0b1000000",
- "x-ms-client-request-id" : "fac65889-6975-4962-b0db-dcab9955436a"
+ "x-ms-request-id" : "3ebe4308-f01e-0105-2f55-88825c000000",
+ "x-ms-client-request-id" : "f78ef54b-45ac-4440-ac56-5b0d4beba290"
},
"Exception" : null
}, {
"Method" : "GET",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f?include=&restype=container&comp=list",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0381340b62612cae434cfd?include=&restype=container&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "5e41f399-5674-435c-82c4-6d41ab826cf0"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "382b9e53-1981-4f91-a437-8fbd30a11a50"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -132,10 +132,10 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "69f957b5-c01e-012f-4096-83f719000000",
- "Body" : "az[]Tue, 15 Oct 2019 20:26:44 GMTTue, 15 Oct 2019 20:26:44 GMT0x8D751ADFEECA5D60application/octet-streamAppendBlobunlockedavailabletrueaz[]2Tue, 15 Oct 2019 20:26:44 GMTTue, 15 Oct 2019 20:26:44 GMT0x8D751ADFEF904EE512application/octet-stream0PageBlobunlockedavailabletrueaz[]3Tue, 15 Oct 2019 20:26:44 GMTTue, 15 Oct 2019 20:26:44 GMT0x8D751ADFF00CF097application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "5e41f399-5674-435c-82c4-6d41ab826cf0",
+ "x-ms-request-id" : "3ebe4335-f01e-0105-5155-88825c000000",
+ "Body" : "中文Mon, 21 Oct 2019 21:22:41 GMTMon, 21 Oct 2019 21:22:41 GMT0x8D7566CCE8DD94C0application/octet-streamAppendBlobunlockedavailabletrue中文2Mon, 21 Oct 2019 21:22:42 GMTMon, 21 Oct 2019 21:22:42 GMT0x8D7566CCEB47D93512application/octet-stream0PageBlobunlockedavailabletrue中文3Mon, 21 Oct 2019 21:22:42 GMTMon, 21 Oct 2019 21:22:42 GMT0x8D7566CCECC9F5A7application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Mon, 21 Oct 2019 21:22:42 GMT",
+ "x-ms-client-request-id" : "382b9e53-1981-4f91-a437-8fbd30a11a50",
"Content-Type" : "application/xml"
},
"Exception" : null
@@ -144,8 +144,8 @@
"Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialchars&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "d9f84ea4-4eff-4db4-99b1-52c20ff7aff3"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "14fca68d-5b5c-4cd5-b2ad-f6233895794c"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -153,20 +153,20 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "80745263-501e-002e-2296-83b0b1000000",
- "Body" : "jtccreateurlspecialcharsjtccreateurlspecialchars0949712d53f50aaceb478fTue, 15 Oct 2019 20:26:44 GMT\"0x8D751ADFEE642C7\"unlockedavailable$account-encryption-keyfalsefalsefalse",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "d9f84ea4-4eff-4db4-99b1-52c20ff7aff3",
+ "x-ms-request-id" : "3ebe437e-f01e-0105-0855-88825c000000",
+ "Body" : "jtccreateurlspecialcharsjtccreateurlspecialchars0381340b62612cae434cfdMon, 21 Oct 2019 21:22:41 GMT\"0x8D7566CCE5A759E\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Mon, 21 Oct 2019 21:22:42 GMT",
+ "x-ms-client-request-id" : "14fca68d-5b5c-4cd5-b2ad-f6233895794c",
"Content-Type" : "application/xml"
},
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0949712d53f50aaceb478f?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0381340b62612cae434cfd?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "4277b681-70a8-407d-b81b-e1fd4b815a1f"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "a6db2bd9-9322-4019-94b4-27673d26754b"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -174,11 +174,11 @@
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "202",
- "x-ms-request-id" : "69f957f8-c01e-012f-0196-83f719000000",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "4277b681-70a8-407d-b81b-e1fd4b815a1f"
+ "x-ms-request-id" : "3ebe43a1-f01e-0105-2355-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:42 GMT",
+ "x-ms-client-request-id" : "a6db2bd9-9322-4019-94b4-27673d26754b"
},
"Exception" : null
} ],
- "variables" : [ "jtccreateurlspecialchars0949712d53f50aaceb478f" ]
+ "variables" : [ "jtccreateurlspecialchars0381340b62612cae434cfd" ]
}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[1].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[1].json
index d2f3e1ac0a1b..b9a94543c75c 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[1].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[1].json
@@ -1,54 +1,54 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars048370a5aff40147ad46ac?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "97676bd0-7fec-4211-bef4-6bfb6b142197"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "8f972b99-05c2-4ccb-997e-159233ef8f83"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D751ADFF177105",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "ETag" : "0x8D7566CCF3F40DB",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:42 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "80745279-501e-002e-3496-83b0b1000000",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "97676bd0-7fec-4211-bef4-6bfb6b142197"
+ "x-ms-request-id" : "3ebe43bb-f01e-0105-3b55-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:42 GMT",
+ "x-ms-client-request-id" : "8f972b99-05c2-4ccb-997e-159233ef8f83"
},
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello%2Fworld",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars048370a5aff40147ad46ac/az%5B%5D",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "4bcbb5a2-cb4a-48e5-b44a-a646369cd4a4"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "fb3bcdc6-d1e1-43cc-9b56-6ad918729183"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D751ADFF1EBE9E",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "ETag" : "0x8D7566CCF518054",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:43 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "69f9583f-c01e-012f-4696-83f719000000",
+ "x-ms-request-id" : "3ebe43e6-f01e-0105-6155-88825c000000",
"x-ms-request-server-encrypted" : "true",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "4bcbb5a2-cb4a-48e5-b44a-a646369cd4a4"
+ "Date" : "Mon, 21 Oct 2019 21:22:42 GMT",
+ "x-ms-client-request-id" : "fb3bcdc6-d1e1-43cc-9b56-6ad918729183"
},
"Exception" : null
}, {
"Method" : "HEAD",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello%2Fworld",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars048370a5aff40147ad46ac/az%5B%5D",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "0cdc8003-04bc-4340-81cd-109dc9e8adaa"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "92389c7d-47b8-46db-ba62-fa36d7b19fbc"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -56,75 +56,75 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"x-ms-lease-state" : "available",
"x-ms-blob-committed-block-count" : "0",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:43 GMT",
"retry-after" : "0",
"StatusCode" : "200",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "Date" : "Mon, 21 Oct 2019 21:22:42 GMT",
"x-ms-blob-type" : "AppendBlob",
"Accept-Ranges" : "bytes",
"x-ms-server-encrypted" : "true",
- "ETag" : "0x8D751ADFF1EBE9E",
- "x-ms-creation-time" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "ETag" : "0x8D7566CCF518054",
+ "x-ms-creation-time" : "Mon, 21 Oct 2019 21:22:43 GMT",
"Content-Length" : "0",
- "x-ms-request-id" : "807452b9-501e-002e-6c96-83b0b1000000",
- "x-ms-client-request-id" : "0cdc8003-04bc-4340-81cd-109dc9e8adaa",
+ "x-ms-request-id" : "3ebe43ff-f01e-0105-7555-88825c000000",
+ "x-ms-client-request-id" : "92389c7d-47b8-46db-ba62-fa36d7b19fbc",
"Content-Type" : "application/octet-stream"
},
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello%2Fworld2",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars048370a5aff40147ad46ac/az%5B%5D2",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "edb546d9-873f-4491-a782-5ca0c1201ea9"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "4b09f006-b5cd-4a20-8fa0-d74eca90c2b6"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D751ADFF3447BE",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "ETag" : "0x8D7566CCF6FE536",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:43 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "69f958c9-c01e-012f-4696-83f719000000",
+ "x-ms-request-id" : "3ebe441c-f01e-0105-0e55-88825c000000",
"x-ms-request-server-encrypted" : "true",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "edb546d9-873f-4491-a782-5ca0c1201ea9"
+ "Date" : "Mon, 21 Oct 2019 21:22:43 GMT",
+ "x-ms-client-request-id" : "4b09f006-b5cd-4a20-8fa0-d74eca90c2b6"
},
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766/hello%2Fworld3",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars048370a5aff40147ad46ac/az%5B%5D3",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "98f88a2d-d211-432a-b329-4402068a7767",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "0c276d18-229a-46a2-bd20-ce0e24d24e56",
"Content-Type" : "application/octet-stream"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"x-ms-content-crc64" : "6RYQPwaVsyQ=",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:43 GMT",
"retry-after" : "0",
"StatusCode" : "201",
"x-ms-request-server-encrypted" : "true",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "Date" : "Mon, 21 Oct 2019 21:22:43 GMT",
"Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
- "ETag" : "0x8D751ADFF3B9C86",
+ "ETag" : "0x8D7566CCF7E8ED3",
"Content-Length" : "0",
- "x-ms-request-id" : "807452f6-501e-002e-2596-83b0b1000000",
- "x-ms-client-request-id" : "98f88a2d-d211-432a-b329-4402068a7767"
+ "x-ms-request-id" : "3ebe4432-f01e-0105-2055-88825c000000",
+ "x-ms-client-request-id" : "0c276d18-229a-46a2-bd20-ce0e24d24e56"
},
"Exception" : null
}, {
"Method" : "GET",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766?include=&restype=container&comp=list",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars048370a5aff40147ad46ac?include=&restype=container&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "bfcd4836-f2a2-4e32-ac89-741cf870c3bf"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "c975219a-2c56-4ab8-bec9-79a289eb44ef"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -132,10 +132,10 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "69f9590c-c01e-012f-7d96-83f719000000",
- "Body" : "hello/worldTue, 15 Oct 2019 20:26:44 GMTTue, 15 Oct 2019 20:26:44 GMT0x8D751ADFF1EBE9E0application/octet-streamAppendBlobunlockedavailabletruehello/world2Tue, 15 Oct 2019 20:26:44 GMTTue, 15 Oct 2019 20:26:44 GMT0x8D751ADFF3447BE512application/octet-stream0PageBlobunlockedavailabletruehello/world3Tue, 15 Oct 2019 20:26:44 GMTTue, 15 Oct 2019 20:26:44 GMT0x8D751ADFF3B9C867application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "bfcd4836-f2a2-4e32-ac89-741cf870c3bf",
+ "x-ms-request-id" : "3ebe443d-f01e-0105-2b55-88825c000000",
+ "Body" : "az[]Mon, 21 Oct 2019 21:22:43 GMTMon, 21 Oct 2019 21:22:43 GMT0x8D7566CCF5180540application/octet-streamAppendBlobunlockedavailabletrueaz[]2Mon, 21 Oct 2019 21:22:43 GMTMon, 21 Oct 2019 21:22:43 GMT0x8D7566CCF6FE536512application/octet-stream0PageBlobunlockedavailabletrueaz[]3Mon, 21 Oct 2019 21:22:43 GMTMon, 21 Oct 2019 21:22:43 GMT0x8D7566CCF7E8ED37application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Mon, 21 Oct 2019 21:22:43 GMT",
+ "x-ms-client-request-id" : "c975219a-2c56-4ab8-bec9-79a289eb44ef",
"Content-Type" : "application/xml"
},
"Exception" : null
@@ -144,8 +144,8 @@
"Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialchars&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "da42f665-e09f-4820-8f4a-a3bb14c3187e"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "6bf1c782-ff47-4bee-a1c3-75cd5a30e2e8"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -153,20 +153,20 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "80745348-501e-002e-6f96-83b0b1000000",
- "Body" : "jtccreateurlspecialcharsjtccreateurlspecialchars021049c2ee6feb21a84766Tue, 15 Oct 2019 20:26:44 GMT\"0x8D751ADFF177105\"unlockedavailable$account-encryption-keyfalsefalsefalse",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "da42f665-e09f-4820-8f4a-a3bb14c3187e",
+ "x-ms-request-id" : "3ebe4452-f01e-0105-3e55-88825c000000",
+ "Body" : "jtccreateurlspecialcharsjtccreateurlspecialchars048370a5aff40147ad46acMon, 21 Oct 2019 21:22:42 GMT\"0x8D7566CCF3F40DB\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Mon, 21 Oct 2019 21:22:43 GMT",
+ "x-ms-client-request-id" : "6bf1c782-ff47-4bee-a1c3-75cd5a30e2e8",
"Content-Type" : "application/xml"
},
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars021049c2ee6feb21a84766?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars048370a5aff40147ad46ac?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "4725f319-b38c-40af-8ae0-63750f5d337a"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "695bacea-3f8d-41c8-b990-6e822a336d9d"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -174,11 +174,11 @@
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "202",
- "x-ms-request-id" : "69f95995-c01e-012f-7f96-83f719000000",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "4725f319-b38c-40af-8ae0-63750f5d337a"
+ "x-ms-request-id" : "3ebe4469-f01e-0105-4f55-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:43 GMT",
+ "x-ms-client-request-id" : "695bacea-3f8d-41c8-b990-6e822a336d9d"
},
"Exception" : null
} ],
- "variables" : [ "jtccreateurlspecialchars021049c2ee6feb21a84766" ]
+ "variables" : [ "jtccreateurlspecialchars048370a5aff40147ad46ac" ]
}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[2].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[2].json
index c0713d7b0ada..5df386be8ce0 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[2].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[2].json
@@ -1,54 +1,54 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0296122c50392891b94a93?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "64be4886-7a52-421b-8d9d-920a46132486"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "51e78779-5389-4ab3-95c1-4eada474ce1d"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D751ADFF5F130B",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:45 GMT",
+ "ETag" : "0x8D7566CCFB417FC",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:43 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "8074536d-501e-002e-0d96-83b0b1000000",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "64be4886-7a52-421b-8d9d-920a46132486"
+ "x-ms-request-id" : "3ebe4484-f01e-0105-6655-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:43 GMT",
+ "x-ms-client-request-id" : "51e78779-5389-4ab3-95c1-4eada474ce1d"
},
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello%26world",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0296122c50392891b94a93/hello%20world",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "0c145142-c352-4adc-a211-4b36b9ab8606"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "e4e4bc97-35b4-444f-bbb7-6acaff5b354a"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D751ADFF674B1F",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:45 GMT",
+ "ETag" : "0x8D7566CCFC1E9E1",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:43 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "69f959ff-c01e-012f-6396-83f719000000",
+ "x-ms-request-id" : "3ebe449e-f01e-0105-7d55-88825c000000",
"x-ms-request-server-encrypted" : "true",
- "Date" : "Tue, 15 Oct 2019 20:26:45 GMT",
- "x-ms-client-request-id" : "0c145142-c352-4adc-a211-4b36b9ab8606"
+ "Date" : "Mon, 21 Oct 2019 21:22:43 GMT",
+ "x-ms-client-request-id" : "e4e4bc97-35b4-444f-bbb7-6acaff5b354a"
},
"Exception" : null
}, {
"Method" : "HEAD",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello%26world",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0296122c50392891b94a93/hello%20world",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "c256f3cf-9e0c-4c96-abe0-b4cbfe026c06"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "53f99d06-dea2-46bb-a8c1-9b59cdd8b3b4"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -56,75 +56,75 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"x-ms-lease-state" : "available",
"x-ms-blob-committed-block-count" : "0",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:45 GMT",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:43 GMT",
"retry-after" : "0",
"StatusCode" : "200",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "Date" : "Mon, 21 Oct 2019 21:22:43 GMT",
"x-ms-blob-type" : "AppendBlob",
"Accept-Ranges" : "bytes",
"x-ms-server-encrypted" : "true",
- "ETag" : "0x8D751ADFF674B1F",
- "x-ms-creation-time" : "Tue, 15 Oct 2019 20:26:45 GMT",
+ "ETag" : "0x8D7566CCFC1E9E1",
+ "x-ms-creation-time" : "Mon, 21 Oct 2019 21:22:43 GMT",
"Content-Length" : "0",
- "x-ms-request-id" : "80745394-501e-002e-3096-83b0b1000000",
- "x-ms-client-request-id" : "c256f3cf-9e0c-4c96-abe0-b4cbfe026c06",
+ "x-ms-request-id" : "3ebe44b5-f01e-0105-1355-88825c000000",
+ "x-ms-client-request-id" : "53f99d06-dea2-46bb-a8c1-9b59cdd8b3b4",
"Content-Type" : "application/octet-stream"
},
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello%26world2",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0296122c50392891b94a93/hello%20world2",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "5b1b136d-5afe-4c02-901a-7aa6aa57b57f"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "551f3c20-5c51-42c8-8955-fe9e255a049a"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D751ADFF777BB8",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:45 GMT",
+ "ETag" : "0x8D7566CCFD99666",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:43 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "69f95a67-c01e-012f-4396-83f719000000",
+ "x-ms-request-id" : "3ebe44d2-f01e-0105-2955-88825c000000",
"x-ms-request-server-encrypted" : "true",
- "Date" : "Tue, 15 Oct 2019 20:26:45 GMT",
- "x-ms-client-request-id" : "5b1b136d-5afe-4c02-901a-7aa6aa57b57f"
+ "Date" : "Mon, 21 Oct 2019 21:22:43 GMT",
+ "x-ms-client-request-id" : "551f3c20-5c51-42c8-8955-fe9e255a049a"
},
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157/hello%26world3",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0296122c50392891b94a93/hello%20world3",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "ce4249a9-1e4b-49df-af34-1f941f0d9764",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "a5e74ea8-4ed9-4ebe-bb56-20eb5e9ba5c1",
"Content-Type" : "application/octet-stream"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"x-ms-content-crc64" : "6RYQPwaVsyQ=",
- "Last-Modified" : "Tue, 15 Oct 2019 20:26:45 GMT",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:44 GMT",
"retry-after" : "0",
"StatusCode" : "201",
"x-ms-request-server-encrypted" : "true",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
+ "Date" : "Mon, 21 Oct 2019 21:22:43 GMT",
"Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
- "ETag" : "0x8D751ADFF7D498A",
+ "ETag" : "0x8D7566CCFE5CE60",
"Content-Length" : "0",
- "x-ms-request-id" : "807453af-501e-002e-4a96-83b0b1000000",
- "x-ms-client-request-id" : "ce4249a9-1e4b-49df-af34-1f941f0d9764"
+ "x-ms-request-id" : "3ebe44fc-f01e-0105-4b55-88825c000000",
+ "x-ms-client-request-id" : "a5e74ea8-4ed9-4ebe-bb56-20eb5e9ba5c1"
},
"Exception" : null
}, {
"Method" : "GET",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157?include=&restype=container&comp=list",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0296122c50392891b94a93?include=&restype=container&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "a6937baa-a0a7-4e1f-8fbe-039d5aafa0d7"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "2d39c178-d448-4eaf-a29c-356ba195d518"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -132,10 +132,10 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "69f95aa6-c01e-012f-7d96-83f719000000",
- "Body" : "hello&worldTue, 15 Oct 2019 20:26:45 GMTTue, 15 Oct 2019 20:26:45 GMT0x8D751ADFF674B1F0application/octet-streamAppendBlobunlockedavailabletruehello&world2Tue, 15 Oct 2019 20:26:45 GMTTue, 15 Oct 2019 20:26:45 GMT0x8D751ADFF777BB8512application/octet-stream0PageBlobunlockedavailabletruehello&world3Tue, 15 Oct 2019 20:26:45 GMTTue, 15 Oct 2019 20:26:45 GMT0x8D751ADFF7D498A7application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
- "Date" : "Tue, 15 Oct 2019 20:26:45 GMT",
- "x-ms-client-request-id" : "a6937baa-a0a7-4e1f-8fbe-039d5aafa0d7",
+ "x-ms-request-id" : "3ebe4520-f01e-0105-6e55-88825c000000",
+ "Body" : "hello worldMon, 21 Oct 2019 21:22:43 GMTMon, 21 Oct 2019 21:22:43 GMT0x8D7566CCFC1E9E10application/octet-streamAppendBlobunlockedavailabletruehello world2Mon, 21 Oct 2019 21:22:43 GMTMon, 21 Oct 2019 21:22:43 GMT0x8D7566CCFD99666512application/octet-stream0PageBlobunlockedavailabletruehello world3Mon, 21 Oct 2019 21:22:44 GMTMon, 21 Oct 2019 21:22:44 GMT0x8D7566CCFE5CE607application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Mon, 21 Oct 2019 21:22:43 GMT",
+ "x-ms-client-request-id" : "2d39c178-d448-4eaf-a29c-356ba195d518",
"Content-Type" : "application/xml"
},
"Exception" : null
@@ -144,8 +144,8 @@
"Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialchars&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "8e01e53b-85a0-4762-9435-592b7ec5ff7a"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "f7fcdc9d-b506-45ee-bad3-7738eebd1698"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -153,20 +153,20 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "807453d2-501e-002e-6a96-83b0b1000000",
- "Body" : "jtccreateurlspecialcharsjtccreateurlspecialchars069059e912dba033824157Tue, 15 Oct 2019 20:26:45 GMT\"0x8D751ADFF5F130B\"unlockedavailable$account-encryption-keyfalsefalsefalse",
- "Date" : "Tue, 15 Oct 2019 20:26:44 GMT",
- "x-ms-client-request-id" : "8e01e53b-85a0-4762-9435-592b7ec5ff7a",
+ "x-ms-request-id" : "3ebe456a-f01e-0105-3255-88825c000000",
+ "Body" : "jtccreateurlspecialcharsjtccreateurlspecialchars0296122c50392891b94a93Mon, 21 Oct 2019 21:22:43 GMT\"0x8D7566CCFB417FC\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Mon, 21 Oct 2019 21:22:44 GMT",
+ "x-ms-client-request-id" : "f7fcdc9d-b506-45ee-bad3-7738eebd1698",
"Content-Type" : "application/xml"
},
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars069059e912dba033824157?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars0296122c50392891b94a93?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "9f072c6e-7981-45b1-ba1e-6d289f9c354e"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "92165591-d1f2-4b16-9541-38549fbec248"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -174,11 +174,11 @@
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "202",
- "x-ms-request-id" : "69f95b23-c01e-012f-6d96-83f719000000",
- "Date" : "Tue, 15 Oct 2019 20:26:45 GMT",
- "x-ms-client-request-id" : "9f072c6e-7981-45b1-ba1e-6d289f9c354e"
+ "x-ms-request-id" : "3ebe45a7-f01e-0105-6755-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:44 GMT",
+ "x-ms-client-request-id" : "92165591-d1f2-4b16-9541-38549fbec248"
},
"Exception" : null
} ],
- "variables" : [ "jtccreateurlspecialchars069059e912dba033824157" ]
+ "variables" : [ "jtccreateurlspecialchars0296122c50392891b94a93" ]
}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[3].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[3].json
new file mode 100644
index 000000000000..628875660f03
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[3].json
@@ -0,0 +1,184 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars055413dcdce762bc5244c2?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "f5ed0c3b-b5d4-4022-a7b2-2397cd127192"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7566CD025E127",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:44 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "3ebe45c7-f01e-0105-0155-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:44 GMT",
+ "x-ms-client-request-id" : "f5ed0c3b-b5d4-4022-a7b2-2397cd127192"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars055413dcdce762bc5244c2/hello%2Fworld",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "a022f782-a2d9-443f-8ea7-510e64cf25b2"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7566CD076C03E",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "3ebe4666-f01e-0105-0255-88825c000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Mon, 21 Oct 2019 21:22:44 GMT",
+ "x-ms-client-request-id" : "a022f782-a2d9-443f-8ea7-510e64cf25b2"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "HEAD",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars055413dcdce762bc5244c2/hello%2Fworld",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "3b61bbb9-775a-4c4a-b6f0-68febe8c8116"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "x-ms-lease-status" : "unlocked",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-lease-state" : "available",
+ "x-ms-blob-committed-block-count" : "0",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "Date" : "Mon, 21 Oct 2019 21:22:44 GMT",
+ "x-ms-blob-type" : "AppendBlob",
+ "Accept-Ranges" : "bytes",
+ "x-ms-server-encrypted" : "true",
+ "ETag" : "0x8D7566CD076C03E",
+ "x-ms-creation-time" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "3ebe4682-f01e-0105-1b55-88825c000000",
+ "x-ms-client-request-id" : "3b61bbb9-775a-4c4a-b6f0-68febe8c8116",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars055413dcdce762bc5244c2/hello%2Fworld2",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "efbbdc5d-ef3d-481b-bbd0-2917f0590c20"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7566CD091F008",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "3ebe4694-f01e-0105-2955-88825c000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Mon, 21 Oct 2019 21:22:44 GMT",
+ "x-ms-client-request-id" : "efbbdc5d-ef3d-481b-bbd0-2917f0590c20"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars055413dcdce762bc5244c2/hello%2Fworld3",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "f2c64eda-904f-40bc-81fb-e13ccb6ddc5f",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-content-crc64" : "6RYQPwaVsyQ=",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
+ "ETag" : "0x8D7566CD09EC473",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "3ebe46a6-f01e-0105-3a55-88825c000000",
+ "x-ms-client-request-id" : "f2c64eda-904f-40bc-81fb-e13ccb6ddc5f"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars055413dcdce762bc5244c2?include=&restype=container&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "b2da18be-9518-4bd6-9130-3124dc7c80f5"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "3ebe46b9-f01e-0105-4b55-88825c000000",
+ "Body" : "hello/worldMon, 21 Oct 2019 21:22:45 GMTMon, 21 Oct 2019 21:22:45 GMT0x8D7566CD076C03E0application/octet-streamAppendBlobunlockedavailabletruehello/world2Mon, 21 Oct 2019 21:22:45 GMTMon, 21 Oct 2019 21:22:45 GMT0x8D7566CD091F008512application/octet-stream0PageBlobunlockedavailabletruehello/world3Mon, 21 Oct 2019 21:22:45 GMTMon, 21 Oct 2019 21:22:45 GMT0x8D7566CD09EC4737application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "x-ms-client-request-id" : "b2da18be-9518-4bd6-9130-3124dc7c80f5",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialchars&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "32be8edd-4260-4059-bc3c-f16af2b17174"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "3ebe46de-f01e-0105-6a55-88825c000000",
+ "Body" : "jtccreateurlspecialcharsjtccreateurlspecialchars055413dcdce762bc5244c2Mon, 21 Oct 2019 21:22:44 GMT\"0x8D7566CD025E127\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "x-ms-client-request-id" : "32be8edd-4260-4059-bc3c-f16af2b17174",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars055413dcdce762bc5244c2?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "f21ae3cb-81c0-4250-8d5f-a3da9685b9c6"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "3ebe46f3-f01e-0105-7c55-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "x-ms-client-request-id" : "f21ae3cb-81c0-4250-8d5f-a3da9685b9c6"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtccreateurlspecialchars055413dcdce762bc5244c2" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[4].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[4].json
new file mode 100644
index 000000000000..52b69fbb1254
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[4].json
@@ -0,0 +1,184 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars02718758ae99ad2581438d?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "c25f18a5-e100-43e6-ac51-8b2172e9d683"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7566CD0DD76F0",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "3ebe4702-f01e-0105-0b55-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "x-ms-client-request-id" : "c25f18a5-e100-43e6-ac51-8b2172e9d683"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars02718758ae99ad2581438d/hello%26world",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "488e4cd9-d15f-41dc-8862-cf34281a18ff"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7566CD0EBBEDC",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "3ebe471d-f01e-0105-1d55-88825c000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "x-ms-client-request-id" : "488e4cd9-d15f-41dc-8862-cf34281a18ff"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "HEAD",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars02718758ae99ad2581438d/hello%26world",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "22b88d1a-7e4c-4555-82d6-7d04ea5448bd"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "x-ms-lease-status" : "unlocked",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-lease-state" : "available",
+ "x-ms-blob-committed-block-count" : "0",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "Date" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "x-ms-blob-type" : "AppendBlob",
+ "Accept-Ranges" : "bytes",
+ "x-ms-server-encrypted" : "true",
+ "ETag" : "0x8D7566CD0EBBEDC",
+ "x-ms-creation-time" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "3ebe4733-f01e-0105-2e55-88825c000000",
+ "x-ms-client-request-id" : "22b88d1a-7e4c-4555-82d6-7d04ea5448bd",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars02718758ae99ad2581438d/hello%26world2",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "76d3d172-451c-4736-9326-7af7d6afe32c"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7566CD1051979",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "3ebe473d-f01e-0105-3655-88825c000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "x-ms-client-request-id" : "76d3d172-451c-4736-9326-7af7d6afe32c"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars02718758ae99ad2581438d/hello%26world3",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "9e8eab29-1d03-49bc-96d3-40e0ec9b8c03",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-content-crc64" : "6RYQPwaVsyQ=",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
+ "ETag" : "0x8D7566CD112631B",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "3ebe4752-f01e-0105-4655-88825c000000",
+ "x-ms-client-request-id" : "9e8eab29-1d03-49bc-96d3-40e0ec9b8c03"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars02718758ae99ad2581438d?include=&restype=container&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "cdf92b9a-1c71-4169-be11-3408bf485946"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "3ebe476f-f01e-0105-6155-88825c000000",
+ "Body" : "hello&worldMon, 21 Oct 2019 21:22:45 GMTMon, 21 Oct 2019 21:22:45 GMT0x8D7566CD0EBBEDC0application/octet-streamAppendBlobunlockedavailabletruehello&world2Mon, 21 Oct 2019 21:22:45 GMTMon, 21 Oct 2019 21:22:45 GMT0x8D7566CD1051979512application/octet-stream0PageBlobunlockedavailabletruehello&world3Mon, 21 Oct 2019 21:22:46 GMTMon, 21 Oct 2019 21:22:46 GMT0x8D7566CD112631B7application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "x-ms-client-request-id" : "cdf92b9a-1c71-4169-be11-3408bf485946",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialchars&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "9f00c822-8f9c-4da8-bdb3-804522fd8ab0"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "3ebe479c-f01e-0105-0b55-88825c000000",
+ "Body" : "jtccreateurlspecialcharsjtccreateurlspecialchars02718758ae99ad2581438dMon, 21 Oct 2019 21:22:45 GMT\"0x8D7566CD0DD76F0\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Mon, 21 Oct 2019 21:22:45 GMT",
+ "x-ms-client-request-id" : "9f00c822-8f9c-4da8-bdb3-804522fd8ab0",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars02718758ae99ad2581438d?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "988182ef-bb47-4490-9150-25443338181b"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "3ebe47b8-f01e-0105-1f55-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "x-ms-client-request-id" : "988182ef-bb47-4490-9150-25443338181b"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtccreateurlspecialchars02718758ae99ad2581438d" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[5].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[5].json
new file mode 100644
index 000000000000..f077e4b09446
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialchars[5].json
@@ -0,0 +1,184 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars00855438fa59e89e4742c2?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "9038666e-fd39-4691-a665-afcab7506616"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7566CD1549890",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "3ebe47d7-f01e-0105-3c55-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "x-ms-client-request-id" : "9038666e-fd39-4691-a665-afcab7506616"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars00855438fa59e89e4742c2/%21*%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%23%5B%5D",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "808c06a4-946e-48bc-b7f4-49030486492e"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7566CD1641992",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "3ebe47f9-f01e-0105-5655-88825c000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "x-ms-client-request-id" : "808c06a4-946e-48bc-b7f4-49030486492e"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "HEAD",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars00855438fa59e89e4742c2/%21*%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%23%5B%5D",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "7c04892a-0ce7-4867-b623-aff3486a25e9"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "x-ms-lease-status" : "unlocked",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-lease-state" : "available",
+ "x-ms-blob-committed-block-count" : "0",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "Date" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "x-ms-blob-type" : "AppendBlob",
+ "Accept-Ranges" : "bytes",
+ "x-ms-server-encrypted" : "true",
+ "ETag" : "0x8D7566CD1641992",
+ "x-ms-creation-time" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "3ebe481a-f01e-0105-7355-88825c000000",
+ "x-ms-client-request-id" : "7c04892a-0ce7-4867-b623-aff3486a25e9",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars00855438fa59e89e4742c2/%21*%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%23%5B%5D2",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "5bb83a6d-db81-4b55-9364-a6f34f135d82"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7566CD18453A7",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "3ebe4825-f01e-0105-7b55-88825c000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "x-ms-client-request-id" : "5bb83a6d-db81-4b55-9364-a6f34f135d82"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars00855438fa59e89e4742c2/%21*%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%23%5B%5D3",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "85358d5a-a579-4e0f-b752-196a895e2c61",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-content-crc64" : "6RYQPwaVsyQ=",
+ "Last-Modified" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
+ "ETag" : "0x8D7566CD1917644",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "3ebe4832-f01e-0105-0855-88825c000000",
+ "x-ms-client-request-id" : "85358d5a-a579-4e0f-b752-196a895e2c61"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars00855438fa59e89e4742c2?include=&restype=container&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "ee8fcf0e-21f4-4ce8-ad6d-ff0dea8d23b8"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "3ebe4851-f01e-0105-2355-88825c000000",
+ "Body" : "!*'();:@&=+$,/?#[]Mon, 21 Oct 2019 21:22:46 GMTMon, 21 Oct 2019 21:22:46 GMT0x8D7566CD16419920application/octet-streamAppendBlobunlockedavailabletrue!*'();:@&=+$,/?#[]2Mon, 21 Oct 2019 21:22:46 GMTMon, 21 Oct 2019 21:22:46 GMT0x8D7566CD18453A7512application/octet-stream0PageBlobunlockedavailabletrue!*'();:@&=+$,/?#[]3Mon, 21 Oct 2019 21:22:46 GMTMon, 21 Oct 2019 21:22:46 GMT0x8D7566CD19176447application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "x-ms-client-request-id" : "ee8fcf0e-21f4-4ce8-ad6d-ff0dea8d23b8",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialchars&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "2db0e21f-923e-41e7-8e38-ac70794a577d"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "3ebe4882-f01e-0105-4b55-88825c000000",
+ "Body" : "jtccreateurlspecialcharsjtccreateurlspecialchars00855438fa59e89e4742c2Mon, 21 Oct 2019 21:22:46 GMT\"0x8D7566CD1549890\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "x-ms-client-request-id" : "2db0e21f-923e-41e7-8e38-ac70794a577d",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialchars00855438fa59e89e4742c2?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "806025ba-2aff-408c-8394-3df961c2e730"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "3ebe489c-f01e-0105-5a55-88825c000000",
+ "Date" : "Mon, 21 Oct 2019 21:22:46 GMT",
+ "x-ms-client-request-id" : "806025ba-2aff-408c-8394-3df961c2e730"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtccreateurlspecialchars00855438fa59e89e4742c2" ]
+}
\ No newline at end of file
From 9bcd0a0ea131bd965e0c44d998ad8ac828b74c12 Mon Sep 17 00:00:00 2001
From: Victor Colin Amador
Date: Wed, 23 Oct 2019 02:05:29 -0700
Subject: [PATCH 08/10] Made sure that blob names are decoded from UTF-8 before
being returned by getters and modified certain builders to account for this.
Added encoding for setting the blobName in BlobServiceSasSignatureValues.
Modified and added tests to account for encoding and added the generated
session records as well. Corrected a test that did not compile on
BlockBlobAPITest.
---
.../azure/storage/blob/batch/APISpec.groovy | 2 +-
.../EncryptedBlobClientBuilder.java | 2 +-
.../specialized/cryptography/APISpec.groovy | 2 +-
.../azure/storage/blob/BlobClientBuilder.java | 2 +-
.../com/azure/storage/blob/BlobUrlParts.java | 4 +-
.../blob/specialized/BlobAsyncClientBase.java | 4 +-
.../blob/specialized/BlobClientBase.java | 2 -
.../BlobServiceSasSignatureValues.java | 7 +-
.../SpecializedBlobClientBuilder.java | 2 +-
.../com/azure/storage/blob/APISpec.groovy | 2 +-
.../com/azure/storage/blob/BlobAPITest.groovy | 17 ++
.../storage/blob/ContainerAPITest.groovy | 39 +++-
.../com/azure/storage/blob/SASTest.groovy | 12 +-
.../blob/specialized/BlockBlobAPITest.groovy | 29 ++-
.../blob/specialized/HelperTest.groovy | 30 ++-
.../blob/specialized/PageBlobAPITest.groovy | 17 ++
.../session-records/BlobAPITestcopymin.json | 14 +-
.../BlobAPITestcopypoller.json | 18 +-
.../BlobAPITestgetblobnameandbuildclient.json | 90 +++++++++
...kBlobAPITestgetblobnameandbuildclient.json | 90 +++++++++
...PITestcreateurlspecialcharsencoded[0].json | 184 ++++++++++++++++++
...PITestcreateurlspecialcharsencoded[1].json | 184 ++++++++++++++++++
...PITestcreateurlspecialcharsencoded[2].json | 184 ++++++++++++++++++
...PITestcreateurlspecialcharsencoded[3].json | 184 ++++++++++++++++++
...PITestcreateurlspecialcharsencoded[4].json | 184 ++++++++++++++++++
...PITestcreateurlspecialcharsencoded[5].json | 184 ++++++++++++++++++
.../ContainerAPITestlistblobshierdelim.json | 6 +-
.../HelperTestipurlparser[0].json | 42 ++--
.../HelperTestipurlparser[1].json | 42 ++--
.../HelperTestipurlparser[2].json | 42 ++--
.../HelperTestipurlparser[3].json | 42 ++--
.../HelperTestipurlparser[4].json | 42 ++--
.../HelperTestipurlparser[5].json | 42 ++--
.../HelperTestipurlparser[6].json | 65 +++++++
.../HelperTestipurlparser[7].json | 65 +++++++
.../HelperTestipurlparser[8].json | 65 +++++++
.../HelperTestipurlparser[9].json | 65 +++++++
.../session-records/HelperTesturlparser.json | 42 ++--
...eBlobAPITestgetblobnameandbuildclient.json | 87 +++++++++
.../session-records/SASTesturlparser.json | 42 ++--
...esturlparserblobnamespecialcharacters.json | 103 ++++++++++
.../SASTesturlparserencodedblobname.json | 65 +++++++
42 files changed, 2123 insertions(+), 223 deletions(-)
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestgetblobnameandbuildclient.json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/BlockBlobAPITestgetblobnameandbuildclient.json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[0].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[1].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[2].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[3].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[4].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[5].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[6].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[7].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[8].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[9].json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetblobnameandbuildclient.json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparserblobnamespecialcharacters.json
create mode 100644 sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparserencodedblobname.json
diff --git a/sdk/storage/azure-storage-blob-batch/src/test/java/com/azure/storage/blob/batch/APISpec.groovy b/sdk/storage/azure-storage-blob-batch/src/test/java/com/azure/storage/blob/batch/APISpec.groovy
index acee3d36a6c3..b7df32f2aa89 100644
--- a/sdk/storage/azure-storage-blob-batch/src/test/java/com/azure/storage/blob/batch/APISpec.groovy
+++ b/sdk/storage/azure-storage-blob-batch/src/test/java/com/azure/storage/blob/batch/APISpec.groovy
@@ -151,7 +151,7 @@ class APISpec extends Specification {
accountName = Configuration.getGlobalConfiguration().get(accountType + "ACCOUNT_NAME")
accountKey = Configuration.getGlobalConfiguration().get(accountType + "ACCOUNT_KEY")
} else {
- accountName = "storageaccount"
+ accountName = "azstoragesdkaccount"
accountKey = "astorageaccountkey"
}
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
index db32b194f894..6705cc3dda35 100644
--- a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
@@ -343,7 +343,7 @@ public EncryptedBlobClientBuilder endpoint(String endpoint) {
this.accountName = parts.getAccountName();
this.endpoint = parts.getScheme() + "://" + parts.getHost();
this.containerName = parts.getBlobContainerName();
- this.blobName = parts.getBlobName();
+ this.blobName = Utility.urlEncode(parts.getBlobName());
this.snapshot = parts.getSnapshot();
String sasToken = parts.getSasQueryParameters().encode();
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/test/java/com/azure/storage/blob/specialized/cryptography/APISpec.groovy b/sdk/storage/azure-storage-blob-cryptography/src/test/java/com/azure/storage/blob/specialized/cryptography/APISpec.groovy
index ba4b76194a1c..c45c8578fc73 100644
--- a/sdk/storage/azure-storage-blob-cryptography/src/test/java/com/azure/storage/blob/specialized/cryptography/APISpec.groovy
+++ b/sdk/storage/azure-storage-blob-cryptography/src/test/java/com/azure/storage/blob/specialized/cryptography/APISpec.groovy
@@ -149,7 +149,7 @@ class APISpec extends Specification {
accountName = Configuration.getGlobalConfiguration().get(accountType + "ACCOUNT_NAME")
accountKey = Configuration.getGlobalConfiguration().get(accountType + "ACCOUNT_KEY")
} else {
- accountName = "storageaccount"
+ accountName = "azstoragesdkaccount"
accountKey = "astorageaccountkey"
}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
index aefc8909c8fb..340cc164a812 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
@@ -270,7 +270,7 @@ public BlobClientBuilder endpoint(String endpoint) {
this.accountName = parts.getAccountName();
this.endpoint = parts.getScheme() + "://" + parts.getHost();
this.containerName = parts.getBlobContainerName();
- this.blobName = parts.getBlobName();
+ this.blobName = Utility.urlEncode(parts.getBlobName());
this.snapshot = parts.getSnapshot();
String sasToken = parts.getSasQueryParameters().encode();
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
index 7163ed5572cf..ab6156f666ac 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
@@ -129,12 +129,10 @@ public BlobUrlParts setContainerName(String containerName) {
/**
* Gets the blob name that will be used as part of the URL path.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @return the blob name.
*/
public String getBlobName() {
- return blobName;
+ return (blobName == null) ? null : Utility.urlDecode(blobName);
}
/**
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
index 4613b656df46..51aeadda3d2c 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
@@ -165,8 +165,6 @@ public final String getContainerName() {
/**
* Get the blob name.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.specialized.BlobAsyncClientBase.getBlobName}
@@ -174,7 +172,7 @@ public final String getContainerName() {
* @return The name of the blob.
*/
public final String getBlobName() {
- return blobName;
+ return (blobName == null) ? null : Utility.urlDecode(blobName);
}
/**
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java
index 7c62844ad2cf..babd7a826b1a 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java
@@ -105,8 +105,6 @@ public final String getContainerName() {
/**
* Get the blob name.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.specialized.BlobClientBase.getBlobName}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java
index 5a1bf6cfe944..c7f5e97fc1db 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java
@@ -9,6 +9,7 @@
import com.azure.storage.blob.BlobSasPermission;
import com.azure.storage.blob.BlobServiceVersion;
import com.azure.storage.blob.models.UserDelegationKey;
+import com.azure.storage.common.Utility;
import com.azure.storage.common.implementation.Constants;
import com.azure.storage.common.implementation.StorageImplUtils;
import com.azure.storage.common.StorageSharedKeyCredential;
@@ -287,17 +288,19 @@ public BlobServiceSasSignatureValues setContainerName(String containerName) {
* creating a container SAS.
*/
public String getBlobName() {
- return blobName;
+ return (blobName == null) ? null : Utility.urlDecode(blobName);
}
/**
* Sets the blob the SAS user may access. Use {@code null} or an empty string to create a container SAS.
*
+ * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
+ *
* @param blobName The name of the blob. Use {@code null} or an empty string to create a container SAS.
* @return The updated BlobServiceSASSignatureValues object.
*/
public BlobServiceSasSignatureValues setBlobName(String blobName) {
- this.blobName = blobName;
+ this.blobName = Utility.urlEncode(Utility.urlDecode(blobName));
return this;
}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
index 1f4c4ddddbb1..7f73a24a46ee 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
@@ -310,7 +310,7 @@ public SpecializedBlobClientBuilder endpoint(String endpoint) {
this.accountName = parts.getAccountName();
this.endpoint = parts.getScheme() + "://" + parts.getHost();
this.containerName = parts.getBlobContainerName();
- this.blobName = parts.getBlobName();
+ this.blobName = Utility.urlEncode(parts.getBlobName());
this.snapshot = parts.getSnapshot();
String sasToken = parts.getSasQueryParameters().encode();
diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/APISpec.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/APISpec.groovy
index 096f2cc49810..bc146490cc32 100644
--- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/APISpec.groovy
+++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/APISpec.groovy
@@ -214,7 +214,7 @@ class APISpec extends Specification {
accountName = Configuration.getGlobalConfiguration().get(accountType + "ACCOUNT_NAME")
accountKey = Configuration.getGlobalConfiguration().get(accountType + "ACCOUNT_KEY")
} else {
- accountName = "storageaccount"
+ accountName = "azstoragesdkaccount"
accountKey = "astorageaccountkey"
}
diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobAPITest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobAPITest.groovy
index c2277dfcf436..6bcdeec9870a 100644
--- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobAPITest.groovy
+++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobAPITest.groovy
@@ -1582,4 +1582,21 @@ class BlobAPITest extends APISpec {
expect:
blobName == bc.getBlobName()
}
+
+ def "Get Blob Name and Build Client"() {
+ when:
+ BlobClient client = cc.getBlobClient(originalBlobName)
+ BlobClientBase baseClient = cc.getBlobClient(client.getBlobName()).getBlockBlobClient()
+
+ then:
+ baseClient.getBlobName() == finalBlobName
+
+ where:
+ originalBlobName | finalBlobName
+ "blob" | "blob"
+ "path/to]a blob" | "path/to]a blob"
+ "path%2Fto%5Da%20blob" | "path/to]a blob"
+ "斑點" | "斑點"
+ "%E6%96%91%E9%BB%9E" | "斑點"
+ }
}
diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy
index 8da18a34b004..defefdab45cb 100644
--- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy
+++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/ContainerAPITest.groovy
@@ -1165,9 +1165,9 @@ class ContainerAPITest extends APISpec {
def blobs = cc.listBlobs().iterator()
then:
- Utility.urlDecode(blobs.next().getName()) == name
- Utility.urlDecode(blobs.next().getName()) == name + "2"
- Utility.urlDecode(blobs.next().getName()) == name + "3"
+ blobs.next().getName() == name
+ blobs.next().getName() == name + "2"
+ blobs.next().getName() == name + "3"
where:
name | _
@@ -1179,6 +1179,39 @@ class ContainerAPITest extends APISpec {
"!*'();:@&=+\$,/?#[]" | _
}
+ @Unroll
+ def "Create URL special chars encoded"() {
+ // This test checks that we handle blob names with encoded special characters correctly.
+ setup:
+ def bu2 = cc.getBlobClient(name).getAppendBlobClient()
+ def bu3 = cc.getBlobClient(name + "2").getPageBlobClient()
+ def bu4 = cc.getBlobClient(name + "3").getBlockBlobClient()
+ def bu5 = cc.getBlobClient(name).getBlockBlobClient()
+
+ expect:
+ bu2.createWithResponse(null, null, null, null, null).getStatusCode() == 201
+ bu5.getPropertiesWithResponse(null, null, null).getStatusCode() == 200
+ bu3.createWithResponse(512, null, null, null, null, null, null).getStatusCode() == 201
+ bu4.uploadWithResponse(defaultInputStream.get(), defaultDataSize, null, null, null, null, null, null).getStatusCode() == 201
+
+ when:
+ def blobs = cc.listBlobs().iterator()
+
+ then:
+ blobs.next().getName() == Utility.urlDecode(name)
+ blobs.next().getName() == Utility.urlDecode(name) + "2"
+ blobs.next().getName() == Utility.urlDecode(name) + "3"
+
+ where:
+ name | _
+ "%E4%B8%AD%E6%96%87" | _
+ "az%5B%5D" | _
+ "hello%20world" | _
+ "hello%2Fworld" | _
+ "hello%26world" | _
+ "%21%2A%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%23%5B%5D" | _
+ }
+
def "Root explicit"() {
setup:
cc = primaryBlobServiceClient.getBlobContainerClient(BlobContainerClient.ROOT_CONTAINER_NAME)
diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/SASTest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/SASTest.groovy
index a0cba57c40f9..fe425d7adc9d 100644
--- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/SASTest.groovy
+++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/SASTest.groovy
@@ -1182,17 +1182,25 @@ class SASTest extends APISpec {
def "URLParser"() {
when:
- def parts = BlobUrlParts.parse(new URL("http://host/container/blob?snapshot=snapshot&sv=" + Constants.HeaderConstants.TARGET_STORAGE_VERSION + "&sr=c&sp=r&sig=Ee%2BSodSXamKSzivSdRTqYGh7AeMVEk3wEoRZ1yzkpSc%3D"))
+ def parts = BlobUrlParts.parse(new URL("http://host/container/" + originalBlobName + "?snapshot=snapshot&sv=" + Constants.HeaderConstants.TARGET_STORAGE_VERSION + "&sr=c&sp=r&sig=Ee%2BSodSXamKSzivSdRTqYGh7AeMVEk3wEoRZ1yzkpSc%3D"))
then:
parts.getScheme() == "http"
parts.getHost() == "host"
parts.getBlobContainerName() == "container"
- parts.getBlobName() == "blob"
+ parts.getBlobName() == finalBlobName
parts.getSnapshot() == "snapshot"
parts.getSasQueryParameters().getPermissions() == "r"
parts.getSasQueryParameters().getVersion() == Constants.HeaderConstants.TARGET_STORAGE_VERSION
parts.getSasQueryParameters().getResource() == "c"
parts.getSasQueryParameters().getSignature() == Utility.urlDecode("Ee%2BSodSXamKSzivSdRTqYGh7AeMVEk3wEoRZ1yzkpSc%3D")
+
+ where:
+ originalBlobName | finalBlobName
+ "blob" | "blob"
+ "path/to]a blob" | "path/to]a blob"
+ "path%2Fto%5Da%20blob" | "path/to]a blob"
+ "斑點" | "斑點"
+ "%E6%96%91%E9%BB%9E" | "斑點"
}
}
diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/BlockBlobAPITest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/BlockBlobAPITest.groovy
index 7cb4f3c44d25..38cfdaafad60 100644
--- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/BlockBlobAPITest.groovy
+++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/BlockBlobAPITest.groovy
@@ -1021,12 +1021,12 @@ class BlockBlobAPITest extends APISpec {
when:
ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions()
.setBlockSize(10)
- blobac.uploadWithResponse(defaultFlux, parallelTransferOptions, new BlobHttpHeaders().setBlobCacheControl(cacheControl)
- .setBlobContentDisposition(contentDisposition)
- .setBlobContentEncoding(contentEncoding)
- .setBlobContentLanguage(contentLanguage)
- .setBlobContentMD5(contentMD5)
- .setBlobContentType(contentType),
+ blobac.uploadWithResponse(defaultFlux, parallelTransferOptions, new BlobHttpHeaders().setCacheControl(cacheControl)
+ .setContentDisposition(contentDisposition)
+ .setContentEncoding(contentEncoding)
+ .setContentLanguage(contentLanguage)
+ .setContentMd5(contentMD5)
+ .setContentType(contentType),
null, null, null).block()
then:
@@ -1255,4 +1255,21 @@ class BlockBlobAPITest extends APISpec {
expect:
blobName == bc.getBlobName()
}
+
+ def "Get Blob Name and Build Client"() {
+ when:
+ def client = cc.getBlobClient(originalBlobName)
+ def blockClient = cc.getBlobClient(client.getBlobName()).getBlockBlobClient()
+
+ then:
+ blockClient.getBlobName() == finalBlobName
+
+ where:
+ originalBlobName | finalBlobName
+ "blob" | "blob"
+ "path/to]a blob" | "path/to]a blob"
+ "path%2Fto%5Da%20blob" | "path/to]a blob"
+ "斑點" | "斑點"
+ "%E6%96%91%E9%BB%9E" | "斑點"
+ }
}
diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy
index 44cf23c6aa5f..937962dd3625 100644
--- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy
+++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy
@@ -654,18 +654,26 @@ class HelperTest extends APISpec {
def "URLParser"() {
when:
- BlobUrlParts parts = BlobUrlParts.parse(new URL("http://host/container/blob?snapshot=snapshot&sv=" + Constants.HeaderConstants.TARGET_STORAGE_VERSION + "&sr=c&sp=r&sig=Ee%2BSodSXamKSzivSdRTqYGh7AeMVEk3wEoRZ1yzkpSc%3D"))
+ BlobUrlParts parts = BlobUrlParts.parse(new URL("http://host/container/" + originalBlobName + "?snapshot=snapshot&sv=" + Constants.HeaderConstants.TARGET_STORAGE_VERSION + "&sr=c&sp=r&sig=Ee%2BSodSXamKSzivSdRTqYGh7AeMVEk3wEoRZ1yzkpSc%3D"))
then:
parts.getScheme() == "http"
parts.getHost() == "host"
parts.getBlobContainerName() == "container"
- parts.getBlobName() == "blob"
+ parts.getBlobName() == finalBlobName
parts.getSnapshot() == "snapshot"
parts.getSasQueryParameters().getPermissions() == "r"
parts.getSasQueryParameters().getVersion() == Constants.HeaderConstants.TARGET_STORAGE_VERSION
parts.getSasQueryParameters().getResource() == "c"
parts.getSasQueryParameters().getSignature() == Utility.urlDecode("Ee%2BSodSXamKSzivSdRTqYGh7AeMVEk3wEoRZ1yzkpSc%3D")
+
+ where:
+ originalBlobName | finalBlobName
+ "blob" | "blob"
+ "path/to]a blob" | "path/to]a blob"
+ "path%2Fto%5Da%20blob" | "path/to]a blob"
+ "斑點" | "斑點"
+ "%E6%96%91%E9%BB%9E" | "斑點"
}
@Unroll
@@ -681,12 +689,16 @@ class HelperTest extends APISpec {
parts.getBlobName() == blobName
where:
- endpoint | scheme | host | accountName | blobContainerName | blobName
- "http://127.0.0.1:10000/devstoreaccount1" | "http" | "127.0.0.1:10000" | "devstoreaccount1" | null | null
- "http://127.0.0.1:10000/devstoreaccount1/container" | "http" | "127.0.0.1:10000" | "devstoreaccount1" | "container" | null
- "http://127.0.0.1:10000/devstoreaccount1/container/blob" | "http" | "127.0.0.1:10000" | "devstoreaccount1" | "container" | "blob"
- "http://localhost:10000/devstoreaccount1" | "http" | "localhost:10000" | "devstoreaccount1" | null | null
- "http://localhost:10000/devstoreaccount1/container" | "http" | "localhost:10000" | "devstoreaccount1" | "container" | null
- "http://localhost:10000/devstoreaccount1/container/blob" | "http" | "localhost:10000" | "devstoreaccount1" | "container" | "blob"
+ endpoint | scheme | host | accountName | blobContainerName | blobName
+ "http://127.0.0.1:10000/devstoreaccount1" | "http" | "127.0.0.1:10000" | "devstoreaccount1" | null | null
+ "http://127.0.0.1:10000/devstoreaccount1/container" | "http" | "127.0.0.1:10000" | "devstoreaccount1" | "container" | null
+ "http://127.0.0.1:10000/devstoreaccount1/container/blob" | "http" | "127.0.0.1:10000" | "devstoreaccount1" | "container" | "blob"
+ "http://localhost:10000/devstoreaccount1" | "http" | "localhost:10000" | "devstoreaccount1" | null | null
+ "http://localhost:10000/devstoreaccount1/container" | "http" | "localhost:10000" | "devstoreaccount1" | "container" | null
+ "http://localhost:10000/devstoreaccount1/container/blob" | "http" | "localhost:10000" | "devstoreaccount1" | "container" | "blob"
+ "http://localhost:10000/devstoreaccount1/container/path/to]a blob" | "http" | "localhost:10000" | "devstoreaccount1" | "container" | "path/to]a blob"
+ "http://localhost:10000/devstoreaccount1/container/path%2Fto%5Da%20blob" | "http" | "localhost:10000" | "devstoreaccount1" | "container" | "path/to]a blob"
+ "http://localhost:10000/devstoreaccount1/container/斑點" | "http" | "localhost:10000" | "devstoreaccount1" | "container" | "斑點"
+ "http://localhost:10000/devstoreaccount1/container/%E6%96%91%E9%BB%9E" | "http" | "localhost:10000" | "devstoreaccount1" | "container" | "斑點"
}
}
diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/PageBlobAPITest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/PageBlobAPITest.groovy
index 28fedb906ff7..5529bb178ac7 100644
--- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/PageBlobAPITest.groovy
+++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/PageBlobAPITest.groovy
@@ -1091,4 +1091,21 @@ class PageBlobAPITest extends APISpec {
expect:
blobName == bc.getBlobName()
}
+
+ def "Get Blob Name and Build Client"() {
+ when:
+ def client = cc.getBlobClient(originalBlobName)
+ def blockClient = cc.getBlobClient(client.getBlobName()).getPageBlobClient()
+
+ then:
+ blockClient.getBlobName() == finalBlobName
+
+ where:
+ originalBlobName | finalBlobName
+ "blob" | "blob"
+ "path/to]a blob" | "path/to]a blob"
+ "path%2Fto%5Da%20blob" | "path/to]a blob"
+ "斑點" | "斑點"
+ "%E6%96%91%E9%BB%9E" | "斑點"
+ }
}
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestcopymin.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestcopymin.json
index ee43e429b769..92444cca1602 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestcopymin.json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestcopymin.json
@@ -1,7 +1,7 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://storageaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
@@ -22,7 +22,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://storageaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674/javablobcopymin1blobapitestcopymin2d369168cc897f8e91",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674/javablobcopymin1blobapitestcopymin2d369168cc897f8e91",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
@@ -47,7 +47,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://storageaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674/javablobcopymin2blobapitestcopymin2d374351eee8a25358",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674/javablobcopymin2blobapitestcopymin2d374351eee8a25358",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
@@ -70,7 +70,7 @@
"Exception" : null
}, {
"Method" : "HEAD",
- "Uri" : "https://storageaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674/javablobcopymin2blobapitestcopymin2d374351eee8a25358",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674/javablobcopymin2blobapitestcopymin2d374351eee8a25358",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
@@ -92,7 +92,7 @@
"Content-Type" : "application/octet-stream",
"x-ms-version" : "2019-02-02",
"x-ms-copy-id" : "4f0c2a5d-549e-4f4a-bc4b-cd8cac86c16a",
- "x-ms-copy-source" : "https://storageaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674/javablobcopymin1blobapitestcopymin2d369168cc897f8e91",
+ "x-ms-copy-source" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674/javablobcopymin1blobapitestcopymin2d369168cc897f8e91",
"x-ms-copy-progress" : "7/7",
"Date" : "Mon, 21 Oct 2019 17:04:00 GMT",
"Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
@@ -119,7 +119,7 @@
"retry-after" : "0",
"StatusCode" : "200",
"x-ms-request-id" : "0a1015d3-f01e-012c-1931-88f41e000000",
- "Body" : "jtccopyminjtccopymin0blobapitestcopymin2d384169a9b8e78655674Mon, 21 Oct 2019 17:03:59 GMT\"0x8D75648AAB11901\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Body" : "jtccopyminjtccopymin0blobapitestcopymin2d384169a9b8e78655674Mon, 21 Oct 2019 17:03:59 GMT\"0x8D75648AAB11901\"unlockedavailable$account-encryption-keyfalsefalsefalse",
"Date" : "Mon, 21 Oct 2019 17:04:00 GMT",
"x-ms-client-request-id" : "ff978f7a-403e-4ac1-bc71-606104da21ee",
"Content-Type" : "application/xml"
@@ -127,7 +127,7 @@
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://storageaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopymin0blobapitestcopymin2d384169a9b8e78655674?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestcopypoller.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestcopypoller.json
index d5aeeb5ce8fd..2cd560f0fcc4 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestcopypoller.json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestcopypoller.json
@@ -1,7 +1,7 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://storageaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
@@ -22,7 +22,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://storageaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller1blobapitestcopypoller4c77708991b060a",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller1blobapitestcopypoller4c77708991b060a",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
@@ -47,7 +47,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://storageaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller2blobapitestcopypoller4c7989982b85210",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller2blobapitestcopypoller4c7989982b85210",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
@@ -70,7 +70,7 @@
"Exception" : null
}, {
"Method" : "HEAD",
- "Uri" : "https://storageaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller2blobapitestcopypoller4c7989982b85210",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller2blobapitestcopypoller4c7989982b85210",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
@@ -92,7 +92,7 @@
"Content-Type" : "application/octet-stream",
"x-ms-version" : "2019-02-02",
"x-ms-copy-id" : "96961cc0-f791-4c6f-91e0-1d6fc92f1cf3",
- "x-ms-copy-source" : "https://storageaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller1blobapitestcopypoller4c77708991b060a",
+ "x-ms-copy-source" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller1blobapitestcopypoller4c77708991b060a",
"x-ms-copy-progress" : "7/7",
"Date" : "Mon, 21 Oct 2019 17:04:02 GMT",
"Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
@@ -106,7 +106,7 @@
"Exception" : null
}, {
"Method" : "HEAD",
- "Uri" : "https://storageaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller2blobapitestcopypoller4c7989982b85210",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller2blobapitestcopypoller4c7989982b85210",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
@@ -128,7 +128,7 @@
"Content-Type" : "application/octet-stream",
"x-ms-version" : "2019-02-02",
"x-ms-copy-id" : "96961cc0-f791-4c6f-91e0-1d6fc92f1cf3",
- "x-ms-copy-source" : "https://storageaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller1blobapitestcopypoller4c77708991b060a",
+ "x-ms-copy-source" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040/javablobcopypoller1blobapitestcopypoller4c77708991b060a",
"x-ms-copy-progress" : "7/7",
"Date" : "Mon, 21 Oct 2019 17:04:02 GMT",
"Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
@@ -155,7 +155,7 @@
"retry-after" : "0",
"StatusCode" : "200",
"x-ms-request-id" : "0a101878-f01e-012c-4031-88f41e000000",
- "Body" : "jtccopypollerjtccopypoller0blobapitestcopypoller4c77667741fdc13040Mon, 21 Oct 2019 17:04:01 GMT\"0x8D75648AB963243\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Body" : "jtccopypollerjtccopypoller0blobapitestcopypoller4c77667741fdc13040Mon, 21 Oct 2019 17:04:01 GMT\"0x8D75648AB963243\"unlockedavailable$account-encryption-keyfalsefalsefalse",
"Date" : "Mon, 21 Oct 2019 17:04:02 GMT",
"x-ms-client-request-id" : "395ea55c-19ac-4c21-b8d8-87309a6d952a",
"Content-Type" : "application/xml"
@@ -163,7 +163,7 @@
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://storageaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccopypoller0blobapitestcopypoller4c77667741fdc13040?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestgetblobnameandbuildclient.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestgetblobnameandbuildclient.json
new file mode 100644
index 000000000000..7606a17fac64
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlobAPITestgetblobnameandbuildclient.json
@@ -0,0 +1,90 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcgetblobnameandbuildclient092877bd0c97f13f3943?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "ced578ab-39aa-41cc-8e13-3b56390d7188"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7579653D9F61A",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:52:25 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "2c1fe2b9-f01e-006c-637f-899ba5000000",
+ "Date" : "Wed, 23 Oct 2019 08:52:25 GMT",
+ "x-ms-client-request-id" : "ced578ab-39aa-41cc-8e13-3b56390d7188"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcgetblobnameandbuildclient092877bd0c97f13f3943/javablobgetblobnameandbuildclient1138474a253e8f026d",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "6f55203d-47e0-473d-bab7-6132dbc1d066",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-content-crc64" : "6RYQPwaVsyQ=",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:52:26 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 08:52:25 GMT",
+ "Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
+ "ETag" : "0x8D7579653E9AF52",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "2c1fe2de-f01e-006c-057f-899ba5000000",
+ "x-ms-client-request-id" : "6f55203d-47e0-473d-bab7-6132dbc1d066"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcgetblobnameandbuildclient&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "fe69bfd4-1358-4bc6-b5f0-b047fd7e5f1d"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "2c1fe2f3-f01e-006c-167f-899ba5000000",
+ "Body" : "jtcgetblobnameandbuildclientjtcgetblobnameandbuildclient092877bd0c97f13f3943Wed, 23 Oct 2019 08:52:25 GMT\"0x8D7579653D9F61A\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:52:25 GMT",
+ "x-ms-client-request-id" : "fe69bfd4-1358-4bc6-b5f0-b047fd7e5f1d",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcgetblobnameandbuildclient092877bd0c97f13f3943?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "e435b675-e5cf-477e-9f43-85bf9254fd9e"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "2c1fe30d-f01e-006c-287f-899ba5000000",
+ "Date" : "Wed, 23 Oct 2019 08:52:25 GMT",
+ "x-ms-client-request-id" : "e435b675-e5cf-477e-9f43-85bf9254fd9e"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtcgetblobnameandbuildclient092877bd0c97f13f3943", "javablobgetblobnameandbuildclient1138474a253e8f026d" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlockBlobAPITestgetblobnameandbuildclient.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlockBlobAPITestgetblobnameandbuildclient.json
new file mode 100644
index 000000000000..cc33413e20ca
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/BlockBlobAPITestgetblobnameandbuildclient.json
@@ -0,0 +1,90 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcgetblobnameandbuildclient0789916a127758344542?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "d65de6c5-bb9a-447c-9897-dbb994ea5491"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D757968050AF9B",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:53:40 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "b887b34c-301e-0131-3f7f-892df4000000",
+ "Date" : "Wed, 23 Oct 2019 08:53:40 GMT",
+ "x-ms-client-request-id" : "d65de6c5-bb9a-447c-9897-dbb994ea5491"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcgetblobnameandbuildclient0789916a127758344542/javablobgetblobnameandbuildclient169574ac148ecd11d7",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "278309ae-dda2-4f20-bd8e-b13e93199b7a",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-content-crc64" : "6RYQPwaVsyQ=",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:53:40 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 08:53:40 GMT",
+ "Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
+ "ETag" : "0x8D75796805DCF0E",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "b887b37d-301e-0131-657f-892df4000000",
+ "x-ms-client-request-id" : "278309ae-dda2-4f20-bd8e-b13e93199b7a"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcgetblobnameandbuildclient&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "b844ee16-2f1f-456c-b251-eee5abdef92a"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "b887b3e4-301e-0131-407f-892df4000000",
+ "Body" : "jtcgetblobnameandbuildclientjtcgetblobnameandbuildclient0789916a127758344542Wed, 23 Oct 2019 08:53:40 GMT\"0x8D757968050AF9B\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:53:40 GMT",
+ "x-ms-client-request-id" : "b844ee16-2f1f-456c-b251-eee5abdef92a",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcgetblobnameandbuildclient0789916a127758344542?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "60f731e7-bd3e-4ebf-8811-0742e8d5fdfe"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "b887b416-301e-0131-6c7f-892df4000000",
+ "Date" : "Wed, 23 Oct 2019 08:53:40 GMT",
+ "x-ms-client-request-id" : "60f731e7-bd3e-4ebf-8811-0742e8d5fdfe"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtcgetblobnameandbuildclient0789916a127758344542", "javablobgetblobnameandbuildclient169574ac148ecd11d7", "javablobgetblobnameandbuildclient298659dd6bad56794e" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[0].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[0].json
new file mode 100644
index 000000000000..09b33b7955ce
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[0].json
@@ -0,0 +1,184 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0146097ec796adde914?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "c5e22a37-c450-437c-9226-770478e7fbac"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75774FEEC7233",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "dd38b5e7-e01e-0037-6f5d-899cd9000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:49 GMT",
+ "x-ms-client-request-id" : "c5e22a37-c450-437c-9226-770478e7fbac"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0146097ec796adde914/%E4%B8%AD%E6%96%87",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "d350a511-ec41-4d50-bc13-fce794fb4c17"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75774FEFAE88D",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "122651cc-d01e-0095-7b5d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:49 GMT",
+ "x-ms-client-request-id" : "d350a511-ec41-4d50-bc13-fce794fb4c17"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "HEAD",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0146097ec796adde914/%E4%B8%AD%E6%96%87",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "80b63147-0bb0-4ce6-a7d2-49fc4e9f15bf"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "x-ms-lease-status" : "unlocked",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-lease-state" : "available",
+ "x-ms-blob-committed-block-count" : "0",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "Date" : "Wed, 23 Oct 2019 04:53:49 GMT",
+ "x-ms-blob-type" : "AppendBlob",
+ "Accept-Ranges" : "bytes",
+ "x-ms-server-encrypted" : "true",
+ "ETag" : "0x8D75774FEFAE88D",
+ "x-ms-creation-time" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b60a-e01e-0037-0d5d-899cd9000000",
+ "x-ms-client-request-id" : "80b63147-0bb0-4ce6-a7d2-49fc4e9f15bf",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0146097ec796adde914/%E4%B8%AD%E6%96%872",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "8e69d768-da61-4479-b7e2-d6f388c4ec3b"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75774FF170301",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "122651ee-d01e-0095-175d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:49 GMT",
+ "x-ms-client-request-id" : "8e69d768-da61-4479-b7e2-d6f388c4ec3b"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0146097ec796adde914/%E4%B8%AD%E6%96%873",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "42996322-9e6b-4529-8afc-5e786fd3075b",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-content-crc64" : "6RYQPwaVsyQ=",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:49 GMT",
+ "Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
+ "ETag" : "0x8D75774FF25D3B1",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b62c-e01e-0037-2e5d-899cd9000000",
+ "x-ms-client-request-id" : "42996322-9e6b-4529-8afc-5e786fd3075b"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0146097ec796adde914?include=&restype=container&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "f6e94d13-6d0b-419f-9ac2-a39ad99b32d2"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "12265208-d01e-0095-2b5d-895145000000",
+ "Body" : "中文Wed, 23 Oct 2019 04:53:50 GMTWed, 23 Oct 2019 04:53:50 GMT0x8D75774FEFAE88D0application/octet-streamAppendBlobunlockedavailabletrue中文2Wed, 23 Oct 2019 04:53:50 GMTWed, 23 Oct 2019 04:53:50 GMT0x8D75774FF170301512application/octet-stream0PageBlobunlockedavailabletrue中文3Wed, 23 Oct 2019 04:53:50 GMTWed, 23 Oct 2019 04:53:50 GMT0x8D75774FF25D3B17application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "x-ms-client-request-id" : "f6e94d13-6d0b-419f-9ac2-a39ad99b32d2",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialcharsencoded&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "3b160bd4-be12-4395-9a21-f5efe2e576f1"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "dd38b663-e01e-0037-5d5d-899cd9000000",
+ "Body" : "jtccreateurlspecialcharsencodedjtccreateurlspecialcharsencoded0146097ec796adde914Wed, 23 Oct 2019 04:53:50 GMT\"0x8D75774FEEC7233\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "x-ms-client-request-id" : "3b160bd4-be12-4395-9a21-f5efe2e576f1",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0146097ec796adde914?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "dafd79de-a17a-4233-8c4f-6730a099442d"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "1226521f-d01e-0095-3d5d-895145000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "x-ms-client-request-id" : "dafd79de-a17a-4233-8c4f-6730a099442d"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtccreateurlspecialcharsencoded0146097ec796adde914" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[1].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[1].json
new file mode 100644
index 000000000000..60cc7001b334
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[1].json
@@ -0,0 +1,184 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded01068870034ba5e1174?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "684570e9-402d-4800-91bf-2e931b491b19"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75774FF693AE6",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "dd38b696-e01e-0037-065d-899cd9000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "x-ms-client-request-id" : "684570e9-402d-4800-91bf-2e931b491b19"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded01068870034ba5e1174/az%5B%5D",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "0a212ce5-39bf-4b3f-8a04-9a6806707f62"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75774FF7566C7",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "12265232-d01e-0095-4c5d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "x-ms-client-request-id" : "0a212ce5-39bf-4b3f-8a04-9a6806707f62"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "HEAD",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded01068870034ba5e1174/az%5B%5D",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "caff9afb-9e54-47f6-b3ab-1cee241e6e04"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "x-ms-lease-status" : "unlocked",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-lease-state" : "available",
+ "x-ms-blob-committed-block-count" : "0",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "Date" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "x-ms-blob-type" : "AppendBlob",
+ "Accept-Ranges" : "bytes",
+ "x-ms-server-encrypted" : "true",
+ "ETag" : "0x8D75774FF7566C7",
+ "x-ms-creation-time" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b6ce-e01e-0037-365d-899cd9000000",
+ "x-ms-client-request-id" : "caff9afb-9e54-47f6-b3ab-1cee241e6e04",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded01068870034ba5e1174/az%5B%5D2",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "c77c27db-d00e-44dd-8146-32372384f5ef"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75774FF93A48D",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "12265266-d01e-0095-705d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "x-ms-client-request-id" : "c77c27db-d00e-44dd-8146-32372384f5ef"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded01068870034ba5e1174/az%5B%5D3",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "7bc3e06d-38a3-4cab-be91-e321e31b9d83",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-content-crc64" : "6RYQPwaVsyQ=",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
+ "ETag" : "0x8D75774FFA0EE42",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b715-e01e-0037-685d-899cd9000000",
+ "x-ms-client-request-id" : "7bc3e06d-38a3-4cab-be91-e321e31b9d83"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded01068870034ba5e1174?include=&restype=container&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "12744829-89ce-4b1d-8ec5-bab0e0e03bf0"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "12265284-d01e-0095-0d5d-895145000000",
+ "Body" : "az[]Wed, 23 Oct 2019 04:53:50 GMTWed, 23 Oct 2019 04:53:50 GMT0x8D75774FF7566C70application/octet-streamAppendBlobunlockedavailabletrueaz[]2Wed, 23 Oct 2019 04:53:51 GMTWed, 23 Oct 2019 04:53:51 GMT0x8D75774FF93A48D512application/octet-stream0PageBlobunlockedavailabletrueaz[]3Wed, 23 Oct 2019 04:53:51 GMTWed, 23 Oct 2019 04:53:51 GMT0x8D75774FFA0EE427application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "x-ms-client-request-id" : "12744829-89ce-4b1d-8ec5-bab0e0e03bf0",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialcharsencoded&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "da28d8fd-d89e-4b0c-b209-50d5866a4390"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "dd38b77b-e01e-0037-305d-899cd9000000",
+ "Body" : "jtccreateurlspecialcharsencodedjtccreateurlspecialcharsencoded01068870034ba5e1174Wed, 23 Oct 2019 04:53:50 GMT\"0x8D75774FF693AE6\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 04:53:50 GMT",
+ "x-ms-client-request-id" : "da28d8fd-d89e-4b0c-b209-50d5866a4390",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded01068870034ba5e1174?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "d266c1bc-ec9e-4ab7-995d-37c318ebfd4d"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "122652a1-d01e-0095-245d-895145000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "x-ms-client-request-id" : "d266c1bc-ec9e-4ab7-995d-37c318ebfd4d"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtccreateurlspecialcharsencoded01068870034ba5e1174" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[2].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[2].json
new file mode 100644
index 000000000000..aba44d3f51a6
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[2].json
@@ -0,0 +1,184 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0377836edf49a795cc4?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "343f984e-45aa-470a-a9e2-caa787e84ea4"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75774FFE0AB1F",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "dd38b7a5-e01e-0037-535d-899cd9000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "x-ms-client-request-id" : "343f984e-45aa-470a-a9e2-caa787e84ea4"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0377836edf49a795cc4/hello%20world",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "bab09923-3042-4281-99b3-1b5aaf27cb6d"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75774FFED9A93",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "122652b6-d01e-0095-375d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "x-ms-client-request-id" : "bab09923-3042-4281-99b3-1b5aaf27cb6d"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "HEAD",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0377836edf49a795cc4/hello%20world",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "c92223fb-1e3c-44db-b5ee-b4257f36cbef"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "x-ms-lease-status" : "unlocked",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-lease-state" : "available",
+ "x-ms-blob-committed-block-count" : "0",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "Date" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "x-ms-blob-type" : "AppendBlob",
+ "Accept-Ranges" : "bytes",
+ "x-ms-server-encrypted" : "true",
+ "ETag" : "0x8D75774FFED9A93",
+ "x-ms-creation-time" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b7ba-e01e-0037-655d-899cd9000000",
+ "x-ms-client-request-id" : "c92223fb-1e3c-44db-b5ee-b4257f36cbef",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0377836edf49a795cc4/hello%20world2",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "5c7f6f71-352e-408d-a1fe-ec945525a7c7"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7577500043559",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "122652cd-d01e-0095-485d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "x-ms-client-request-id" : "5c7f6f71-352e-408d-a1fe-ec945525a7c7"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0377836edf49a795cc4/hello%20world3",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "5e29981e-a135-4871-9856-4a255f112d84",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-content-crc64" : "6RYQPwaVsyQ=",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
+ "ETag" : "0x8D757750010E2AD",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b7dc-e01e-0037-045d-899cd9000000",
+ "x-ms-client-request-id" : "5e29981e-a135-4871-9856-4a255f112d84"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0377836edf49a795cc4?include=&restype=container&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "4b28f6d9-e5c5-4d8b-8fe5-9e51ac4cc3e2"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "122652ea-d01e-0095-605d-895145000000",
+ "Body" : "hello worldWed, 23 Oct 2019 04:53:51 GMTWed, 23 Oct 2019 04:53:51 GMT0x8D75774FFED9A930application/octet-streamAppendBlobunlockedavailabletruehello world2Wed, 23 Oct 2019 04:53:51 GMTWed, 23 Oct 2019 04:53:51 GMT0x8D7577500043559512application/octet-stream0PageBlobunlockedavailabletruehello world3Wed, 23 Oct 2019 04:53:52 GMTWed, 23 Oct 2019 04:53:52 GMT0x8D757750010E2AD7application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "x-ms-client-request-id" : "4b28f6d9-e5c5-4d8b-8fe5-9e51ac4cc3e2",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialcharsencoded&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "d5ee6feb-2d52-45ef-a23d-046a9d7afb83"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "dd38b7ef-e01e-0037-175d-899cd9000000",
+ "Body" : "jtccreateurlspecialcharsencodedjtccreateurlspecialcharsencoded0377836edf49a795cc4Wed, 23 Oct 2019 04:53:51 GMT\"0x8D75774FFE0AB1F\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "x-ms-client-request-id" : "d5ee6feb-2d52-45ef-a23d-046a9d7afb83",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0377836edf49a795cc4?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "bb1cceef-3a15-49e7-8a55-73c82bac28b4"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "1226530c-d01e-0095-785d-895145000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "x-ms-client-request-id" : "bb1cceef-3a15-49e7-8a55-73c82bac28b4"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtccreateurlspecialcharsencoded0377836edf49a795cc4" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[3].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[3].json
new file mode 100644
index 000000000000..02582f5ffa5f
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[3].json
@@ -0,0 +1,184 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0432041d31d3dbc17f4?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "6ae32fda-2ec4-4fb2-b0b5-f7b9aa39922c"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7577500524D83",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "dd38b824-e01e-0037-385d-899cd9000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "x-ms-client-request-id" : "6ae32fda-2ec4-4fb2-b0b5-f7b9aa39922c"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0432041d31d3dbc17f4/hello%2Fworld",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "db1f1320-d626-4e91-9cf1-90989d7fa540"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7577500624B1D",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "12265336-d01e-0095-155d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "x-ms-client-request-id" : "db1f1320-d626-4e91-9cf1-90989d7fa540"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "HEAD",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0432041d31d3dbc17f4/hello%2Fworld",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "20ad8845-94fe-4208-ba1a-77f201360987"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "x-ms-lease-status" : "unlocked",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-lease-state" : "available",
+ "x-ms-blob-committed-block-count" : "0",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "Date" : "Wed, 23 Oct 2019 04:53:51 GMT",
+ "x-ms-blob-type" : "AppendBlob",
+ "Accept-Ranges" : "bytes",
+ "x-ms-server-encrypted" : "true",
+ "ETag" : "0x8D7577500624B1D",
+ "x-ms-creation-time" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b844-e01e-0037-505d-899cd9000000",
+ "x-ms-client-request-id" : "20ad8845-94fe-4208-ba1a-77f201360987",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0432041d31d3dbc17f4/hello%2Fworld2",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "5b2e2df7-a091-42d7-84c1-c5bfffdf7f19"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75775007B5783",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "12265350-d01e-0095-2d5d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "x-ms-client-request-id" : "5b2e2df7-a091-42d7-84c1-c5bfffdf7f19"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0432041d31d3dbc17f4/hello%2Fworld3",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "d43b1413-c170-4864-aba4-b3e77dfa1c94",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-content-crc64" : "6RYQPwaVsyQ=",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
+ "ETag" : "0x8D75775008804D7",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b872-e01e-0037-775d-899cd9000000",
+ "x-ms-client-request-id" : "d43b1413-c170-4864-aba4-b3e77dfa1c94"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0432041d31d3dbc17f4?include=&restype=container&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "8a3c6d81-c2e6-4697-a216-b23e6f04ea1f"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "12265377-d01e-0095-485d-895145000000",
+ "Body" : "hello/worldWed, 23 Oct 2019 04:53:52 GMTWed, 23 Oct 2019 04:53:52 GMT0x8D7577500624B1D0application/octet-streamAppendBlobunlockedavailabletruehello/world2Wed, 23 Oct 2019 04:53:52 GMTWed, 23 Oct 2019 04:53:52 GMT0x8D75775007B5783512application/octet-stream0PageBlobunlockedavailabletruehello/world3Wed, 23 Oct 2019 04:53:52 GMTWed, 23 Oct 2019 04:53:52 GMT0x8D75775008804D77application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "x-ms-client-request-id" : "8a3c6d81-c2e6-4697-a216-b23e6f04ea1f",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialcharsencoded&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "e81074c0-0ae0-4364-b96b-fdee1456cdba"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "dd38b8c4-e01e-0037-445d-899cd9000000",
+ "Body" : "jtccreateurlspecialcharsencodedjtccreateurlspecialcharsencoded0432041d31d3dbc17f4Wed, 23 Oct 2019 04:53:52 GMT\"0x8D7577500524D83\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "x-ms-client-request-id" : "e81074c0-0ae0-4364-b96b-fdee1456cdba",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded0432041d31d3dbc17f4?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "6207fbcd-fe87-4387-bf01-d03c8c21dcbd"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "1226539c-d01e-0095-5c5d-895145000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "x-ms-client-request-id" : "6207fbcd-fe87-4387-bf01-d03c8c21dcbd"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtccreateurlspecialcharsencoded0432041d31d3dbc17f4" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[4].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[4].json
new file mode 100644
index 000000000000..ea4629f61c49
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[4].json
@@ -0,0 +1,184 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded081883079d956d1a194?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "2301770f-aaca-4a43-bbb1-8652ff1d20f0"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7577500C9BDEC",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "dd38b8fd-e01e-0037-755d-899cd9000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "x-ms-client-request-id" : "2301770f-aaca-4a43-bbb1-8652ff1d20f0"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded081883079d956d1a194/hello%26world",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "094851a2-48d7-4590-a684-2e03e20fba1e"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7577500D85B91",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "122653b1-d01e-0095-6b5d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "x-ms-client-request-id" : "094851a2-48d7-4590-a684-2e03e20fba1e"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "HEAD",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded081883079d956d1a194/hello%26world",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "9d13bb97-357f-4ea7-af06-f57e555528b4"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "x-ms-lease-status" : "unlocked",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-lease-state" : "available",
+ "x-ms-blob-committed-block-count" : "0",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "Date" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "x-ms-blob-type" : "AppendBlob",
+ "Accept-Ranges" : "bytes",
+ "x-ms-server-encrypted" : "true",
+ "ETag" : "0x8D7577500D85B91",
+ "x-ms-creation-time" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b91e-e01e-0037-0f5d-899cd9000000",
+ "x-ms-client-request-id" : "9d13bb97-357f-4ea7-af06-f57e555528b4",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded081883079d956d1a194/hello%26world2",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "bf115d49-31df-4ee7-86f8-9b3601077697"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7577500F8E3E2",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "122653d0-d01e-0095-045d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "x-ms-client-request-id" : "bf115d49-31df-4ee7-86f8-9b3601077697"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded081883079d956d1a194/hello%26world3",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "58a5bdb2-b389-45e4-b6b9-f9d8000850c6",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-content-crc64" : "6RYQPwaVsyQ=",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:52 GMT",
+ "Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
+ "ETag" : "0x8D75775010AC28D",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b948-e01e-0037-335d-899cd9000000",
+ "x-ms-client-request-id" : "58a5bdb2-b389-45e4-b6b9-f9d8000850c6"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded081883079d956d1a194?include=&restype=container&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "5933fcf7-9faa-4af3-9ea0-38b026e03190"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "122653fc-d01e-0095-285d-895145000000",
+ "Body" : "hello&worldWed, 23 Oct 2019 04:53:53 GMTWed, 23 Oct 2019 04:53:53 GMT0x8D7577500D85B910application/octet-streamAppendBlobunlockedavailabletruehello&world2Wed, 23 Oct 2019 04:53:53 GMTWed, 23 Oct 2019 04:53:53 GMT0x8D7577500F8E3E2512application/octet-stream0PageBlobunlockedavailabletruehello&world3Wed, 23 Oct 2019 04:53:53 GMTWed, 23 Oct 2019 04:53:53 GMT0x8D75775010AC28D7application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "x-ms-client-request-id" : "5933fcf7-9faa-4af3-9ea0-38b026e03190",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialcharsencoded&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "ebf41214-da34-4367-bd09-1e6435a0b646"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "dd38b977-e01e-0037-605d-899cd9000000",
+ "Body" : "jtccreateurlspecialcharsencodedjtccreateurlspecialcharsencoded081883079d956d1a194Wed, 23 Oct 2019 04:53:53 GMT\"0x8D7577500C9BDEC\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "x-ms-client-request-id" : "ebf41214-da34-4367-bd09-1e6435a0b646",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded081883079d956d1a194?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "0766f34b-47fb-451c-93de-5915d3050c4f"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "1226543b-d01e-0095-555d-895145000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "x-ms-client-request-id" : "0766f34b-47fb-451c-93de-5915d3050c4f"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtccreateurlspecialcharsencoded081883079d956d1a194" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[5].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[5].json
new file mode 100644
index 000000000000..0e22e35e8712
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestcreateurlspecialcharsencoded[5].json
@@ -0,0 +1,184 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded062515cd8e913f1ea24?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "eb416f02-b85f-4371-aa74-8bc93fc98ff9"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75775014D3F12",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:54 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "dd38b996-e01e-0037-755d-899cd9000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "x-ms-client-request-id" : "eb416f02-b85f-4371-aa74-8bc93fc98ff9"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded062515cd8e913f1ea24/%21*%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%23%5B%5D",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "fad7c552-4c5a-49f4-a73d-1e91b77b7339"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75775015B6758",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:54 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "12265477-d01e-0095-7e5d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "x-ms-client-request-id" : "fad7c552-4c5a-49f4-a73d-1e91b77b7339"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "HEAD",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded062515cd8e913f1ea24/%21*%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%23%5B%5D",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "57abaa23-76cd-4b0c-bd24-c9ce4c010ee3"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "x-ms-lease-status" : "unlocked",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-lease-state" : "available",
+ "x-ms-blob-committed-block-count" : "0",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:54 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "Date" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "x-ms-blob-type" : "AppendBlob",
+ "Accept-Ranges" : "bytes",
+ "x-ms-server-encrypted" : "true",
+ "ETag" : "0x8D75775015B6758",
+ "x-ms-creation-time" : "Wed, 23 Oct 2019 04:53:54 GMT",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b9af-e01e-0037-075d-899cd9000000",
+ "x-ms-client-request-id" : "57abaa23-76cd-4b0c-bd24-c9ce4c010ee3",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded062515cd8e913f1ea24/%21*%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%23%5B%5D2",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "e43feb4b-fd2d-44b3-983f-8e58e9b0c47c"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75775017A8FB7",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:54 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "122654cc-d01e-0095-3d5d-895145000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "x-ms-client-request-id" : "e43feb4b-fd2d-44b3-983f-8e58e9b0c47c"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded062515cd8e913f1ea24/%21*%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%23%5B%5D3",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "01b492a0-7885-499a-b575-f6f65ed95296",
+ "Content-Type" : "application/octet-stream"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-content-crc64" : "6RYQPwaVsyQ=",
+ "Last-Modified" : "Wed, 23 Oct 2019 04:53:54 GMT",
+ "retry-after" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 04:53:53 GMT",
+ "Content-MD5" : "wh+Wm18D0z1D4E+PE252gg==",
+ "ETag" : "0x8D7577501889CEF",
+ "Content-Length" : "0",
+ "x-ms-request-id" : "dd38b9cb-e01e-0037-1b5d-899cd9000000",
+ "x-ms-client-request-id" : "01b492a0-7885-499a-b575-f6f65ed95296"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded062515cd8e913f1ea24?include=&restype=container&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "49cfe96a-dc8e-4efc-a526-6a4f1178c078"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "122654f9-d01e-0095-645d-895145000000",
+ "Body" : "!*'();:@&=+$,/?#[]Wed, 23 Oct 2019 04:53:54 GMTWed, 23 Oct 2019 04:53:54 GMT0x8D75775015B67580application/octet-streamAppendBlobunlockedavailabletrue!*'();:@&=+$,/?#[]2Wed, 23 Oct 2019 04:53:54 GMTWed, 23 Oct 2019 04:53:54 GMT0x8D75775017A8FB7512application/octet-stream0PageBlobunlockedavailabletrue!*'();:@&=+$,/?#[]3Wed, 23 Oct 2019 04:53:54 GMTWed, 23 Oct 2019 04:53:54 GMT0x8D7577501889CEF7application/octet-streamwh+Wm18D0z1D4E+PE252gg==BlockBlobHottrueunlockedavailabletrue",
+ "Date" : "Wed, 23 Oct 2019 04:53:54 GMT",
+ "x-ms-client-request-id" : "49cfe96a-dc8e-4efc-a526-6a4f1178c078",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtccreateurlspecialcharsencoded&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "06b2c095-8df0-4c0e-a0e8-6379de2f89f4"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "dd38b9f4-e01e-0037-3b5d-899cd9000000",
+ "Body" : "jtccreateurlspecialcharsencodedjtccreateurlspecialcharsencoded062515cd8e913f1ea24Wed, 23 Oct 2019 04:53:54 GMT\"0x8D75775014D3F12\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 04:53:54 GMT",
+ "x-ms-client-request-id" : "06b2c095-8df0-4c0e-a0e8-6379de2f89f4",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtccreateurlspecialcharsencoded062515cd8e913f1ea24?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "cc1f9bc0-ba3e-4c00-a433-ab3fca986b2f"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "12265547-d01e-0095-265d-895145000000",
+ "Date" : "Wed, 23 Oct 2019 04:53:54 GMT",
+ "x-ms-client-request-id" : "cc1f9bc0-ba3e-4c00-a433-ab3fca986b2f"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtccreateurlspecialcharsencoded062515cd8e913f1ea24" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestlistblobshierdelim.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestlistblobshierdelim.json
index 436b9ca7af33..7a7c5af72856 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestlistblobshierdelim.json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/ContainerAPITestlistblobshierdelim.json
@@ -44,7 +44,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim0035927cc5509b2b374c9596/b%2Fa",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim054357d768cc943e724d6f81/b%2Fa",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
@@ -88,7 +88,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim0035927cc5509b2b374c9596/d%2Fa",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim054357d768cc943e724d6f81/d%2Fa",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
@@ -154,7 +154,7 @@
"Exception" : null
}, {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim0035927cc5509b2b374c9596/g%2Fa",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtclistblobshierdelim054357d768cc943e724d6f81/g%2Fa",
"Headers" : {
"x-ms-version" : "2019-02-02",
"User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_222; Windows 10 10.0",
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[0].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[0].json
index 229cad827add..03fdc78610fe 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[0].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[0].json
@@ -1,23 +1,23 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparsercbe38650eefd2b3db?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser64c15631461d4f788?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "07c9f837-eb52-433a-acb5-3ea2082bfe39"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "d61e2814-cd0f-4b48-b336-cd758e643e2d"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D7536D4C596D57",
- "Last-Modified" : "Fri, 18 Oct 2019 01:48:39 GMT",
+ "ETag" : "0x8D75793B0CFF020",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:33:33 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "e803f3cb-601e-0129-3056-850061000000",
- "Date" : "Fri, 18 Oct 2019 01:48:39 GMT",
- "x-ms-client-request-id" : "07c9f837-eb52-433a-acb5-3ea2082bfe39"
+ "x-ms-request-id" : "dde8b066-401e-0057-3d7c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:33 GMT",
+ "x-ms-client-request-id" : "d61e2814-cd0f-4b48-b336-cd758e643e2d"
},
"Exception" : null
}, {
@@ -25,8 +25,8 @@
"Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcipurlparser&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "03bbce88-2e54-4326-96f7-d3f85a4a68b6"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "f3f2a6c1-b647-4f9f-8cb0-3fff55590560"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -34,20 +34,20 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "e803f3e6-601e-0129-4156-850061000000",
- "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparsercbe38650eefd2b3dbFri, 18 Oct 2019 01:48:39 GMT\"0x8D7536D4C596D57\"unlockedavailable$account-encryption-keyfalsefalsefalse",
- "Date" : "Fri, 18 Oct 2019 01:48:39 GMT",
- "x-ms-client-request-id" : "03bbce88-2e54-4326-96f7-d3f85a4a68b6",
+ "x-ms-request-id" : "dde8b0d2-401e-0057-167c-89d9fb000000",
+ "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparser64c15631461d4f788Wed, 23 Oct 2019 08:33:33 GMT\"0x8D75793B0CFF020\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:33:33 GMT",
+ "x-ms-client-request-id" : "f3f2a6c1-b647-4f9f-8cb0-3fff55590560",
"Content-Type" : "application/xml"
},
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparsercbe38650eefd2b3db?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser64c15631461d4f788?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "b9bcf2e4-b7de-4edb-9779-8e56920d10cd"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "7b963dfb-13ef-4ac7-b9b2-b936d2270bf1"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -55,11 +55,11 @@
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "202",
- "x-ms-request-id" : "e803f3f1-601e-0129-4b56-850061000000",
- "Date" : "Fri, 18 Oct 2019 01:48:39 GMT",
- "x-ms-client-request-id" : "b9bcf2e4-b7de-4edb-9779-8e56920d10cd"
+ "x-ms-request-id" : "dde8b104-401e-0057-457c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:33 GMT",
+ "x-ms-client-request-id" : "7b963dfb-13ef-4ac7-b9b2-b936d2270bf1"
},
"Exception" : null
} ],
- "variables" : [ "jtcipurlparser0helpertestipurlparsercbe38650eefd2b3db" ]
+ "variables" : [ "jtcipurlparser0helpertestipurlparser64c15631461d4f788" ]
}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[1].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[1].json
index 2e5b7264535c..4eeb51fedb38 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[1].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[1].json
@@ -1,23 +1,23 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparserdcd885757bf71270f?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser10171229eca98a3ef?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "21008819-8ba9-470c-993c-d1c632c92ff5"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "6e4fa228-f790-4228-a858-4d9a72a8c2b5"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D7536D4CA6DECA",
- "Last-Modified" : "Fri, 18 Oct 2019 01:48:39 GMT",
+ "ETag" : "0x8D75793B135CF86",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:33:34 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "e803f3fe-601e-0129-5256-850061000000",
- "Date" : "Fri, 18 Oct 2019 01:48:39 GMT",
- "x-ms-client-request-id" : "21008819-8ba9-470c-993c-d1c632c92ff5"
+ "x-ms-request-id" : "dde8b12c-401e-0057-697c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:33 GMT",
+ "x-ms-client-request-id" : "6e4fa228-f790-4228-a858-4d9a72a8c2b5"
},
"Exception" : null
}, {
@@ -25,8 +25,8 @@
"Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcipurlparser&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "7242a3d7-9eaa-4627-985f-65bee741cfb5"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "1dc41197-4b3e-40cd-973b-366f06b48078"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -34,20 +34,20 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "e803f413-601e-0129-6056-850061000000",
- "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparserdcd885757bf71270fFri, 18 Oct 2019 01:48:39 GMT\"0x8D7536D4CA6DECA\"unlockedavailable$account-encryption-keyfalsefalsefalse",
- "Date" : "Fri, 18 Oct 2019 01:48:39 GMT",
- "x-ms-client-request-id" : "7242a3d7-9eaa-4627-985f-65bee741cfb5",
+ "x-ms-request-id" : "dde8b143-401e-0057-7b7c-89d9fb000000",
+ "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparser10171229eca98a3efWed, 23 Oct 2019 08:33:34 GMT\"0x8D75793B135CF86\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:33:34 GMT",
+ "x-ms-client-request-id" : "1dc41197-4b3e-40cd-973b-366f06b48078",
"Content-Type" : "application/xml"
},
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparserdcd885757bf71270f?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser10171229eca98a3ef?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "9dfc2d69-9150-4ad8-b042-48116d3a8fe0"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "2ea69ccd-061f-49a6-96e9-3742d53dd3e9"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -55,11 +55,11 @@
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "202",
- "x-ms-request-id" : "e803f425-601e-0129-6c56-850061000000",
- "Date" : "Fri, 18 Oct 2019 01:48:39 GMT",
- "x-ms-client-request-id" : "9dfc2d69-9150-4ad8-b042-48116d3a8fe0"
+ "x-ms-request-id" : "dde8b160-401e-0057-147c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:34 GMT",
+ "x-ms-client-request-id" : "2ea69ccd-061f-49a6-96e9-3742d53dd3e9"
},
"Exception" : null
} ],
- "variables" : [ "jtcipurlparser0helpertestipurlparserdcd885757bf71270f" ]
+ "variables" : [ "jtcipurlparser0helpertestipurlparser10171229eca98a3ef" ]
}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[2].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[2].json
index 66816d6dc24a..d45a23653aba 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[2].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[2].json
@@ -1,23 +1,23 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser0ca19990074741782?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparsere9e76003b8e7df988?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "ee4677b7-bf8d-4038-af01-e47887e2d597"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "b74ef790-58ec-403f-ad70-326f6709e676"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D7536D4CC4F62D",
- "Last-Modified" : "Fri, 18 Oct 2019 01:48:40 GMT",
+ "ETag" : "0x8D75793B165EBE3",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:33:34 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "e803f436-601e-0129-7656-850061000000",
- "Date" : "Fri, 18 Oct 2019 01:48:39 GMT",
- "x-ms-client-request-id" : "ee4677b7-bf8d-4038-af01-e47887e2d597"
+ "x-ms-request-id" : "dde8b185-401e-0057-367c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:34 GMT",
+ "x-ms-client-request-id" : "b74ef790-58ec-403f-ad70-326f6709e676"
},
"Exception" : null
}, {
@@ -25,8 +25,8 @@
"Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcipurlparser&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "43e0a7f4-301b-4514-afb2-7f73eec11835"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "7df90275-fd52-4507-be2a-e77d991aabd5"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -34,20 +34,20 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "edcef28f-f01e-0089-6356-858952000000",
- "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparser0ca19990074741782Fri, 18 Oct 2019 01:48:40 GMT\"0x8D7536D4CC4F62D\"unlockedavailable$account-encryption-keyfalsefalsefalse",
- "Date" : "Fri, 18 Oct 2019 01:48:39 GMT",
- "x-ms-client-request-id" : "43e0a7f4-301b-4514-afb2-7f73eec11835",
+ "x-ms-request-id" : "dde8b1a7-401e-0057-507c-89d9fb000000",
+ "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparsere9e76003b8e7df988Wed, 23 Oct 2019 08:33:34 GMT\"0x8D75793B165EBE3\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:33:34 GMT",
+ "x-ms-client-request-id" : "7df90275-fd52-4507-be2a-e77d991aabd5",
"Content-Type" : "application/xml"
},
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser0ca19990074741782?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparsere9e76003b8e7df988?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "251fa9cb-8f30-4103-8a4e-500a0c139788"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "2228adb3-2aac-4628-8789-7845d60a72e1"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -55,11 +55,11 @@
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "202",
- "x-ms-request-id" : "e803f47d-601e-0129-2356-850061000000",
- "Date" : "Fri, 18 Oct 2019 01:48:40 GMT",
- "x-ms-client-request-id" : "251fa9cb-8f30-4103-8a4e-500a0c139788"
+ "x-ms-request-id" : "dde8b1be-401e-0057-637c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:34 GMT",
+ "x-ms-client-request-id" : "2228adb3-2aac-4628-8789-7845d60a72e1"
},
"Exception" : null
} ],
- "variables" : [ "jtcipurlparser0helpertestipurlparser0ca19990074741782" ]
+ "variables" : [ "jtcipurlparser0helpertestipurlparsere9e76003b8e7df988" ]
}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[3].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[3].json
index 820afbc32436..e3a40a74adbe 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[3].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[3].json
@@ -1,23 +1,23 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser2564658662180fcf8?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser7ce463622a47679ed?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "2d21ccc2-d255-461f-b70d-8ce1c0fb9a24"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "4b2b4c39-e1c2-4847-95b4-7eced1e7c1a2"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D7536D4D070889",
- "Last-Modified" : "Fri, 18 Oct 2019 01:48:40 GMT",
+ "ETag" : "0x8D75793B19AEB70",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:33:34 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "edcef2a6-f01e-0089-7556-858952000000",
- "Date" : "Fri, 18 Oct 2019 01:48:39 GMT",
- "x-ms-client-request-id" : "2d21ccc2-d255-461f-b70d-8ce1c0fb9a24"
+ "x-ms-request-id" : "dde8b1ec-401e-0057-0a7c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:34 GMT",
+ "x-ms-client-request-id" : "4b2b4c39-e1c2-4847-95b4-7eced1e7c1a2"
},
"Exception" : null
}, {
@@ -25,8 +25,8 @@
"Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcipurlparser&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "6074de00-97bf-4617-b985-90602e2c2f92"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "93403ef6-d43e-4748-9554-e4deea8812c7"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -34,20 +34,20 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "e803f48f-601e-0129-3056-850061000000",
- "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparser2564658662180fcf8Fri, 18 Oct 2019 01:48:40 GMT\"0x8D7536D4D070889\"unlockedavailable$account-encryption-keyfalsefalsefalse",
- "Date" : "Fri, 18 Oct 2019 01:48:40 GMT",
- "x-ms-client-request-id" : "6074de00-97bf-4617-b985-90602e2c2f92",
+ "x-ms-request-id" : "dde8b206-401e-0057-207c-89d9fb000000",
+ "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparser7ce463622a47679edWed, 23 Oct 2019 08:33:34 GMT\"0x8D75793B19AEB70\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:33:34 GMT",
+ "x-ms-client-request-id" : "93403ef6-d43e-4748-9554-e4deea8812c7",
"Content-Type" : "application/xml"
},
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser2564658662180fcf8?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser7ce463622a47679ed?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "bec9b4ba-3fc7-4c86-b392-6ec64a660af1"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "bb28a809-e590-4ae3-9993-3f035141a9d3"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -55,11 +55,11 @@
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "202",
- "x-ms-request-id" : "edcef2cd-f01e-0089-1356-858952000000",
- "Date" : "Fri, 18 Oct 2019 01:48:39 GMT",
- "x-ms-client-request-id" : "bec9b4ba-3fc7-4c86-b392-6ec64a660af1"
+ "x-ms-request-id" : "dde8b21e-401e-0057-327c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:34 GMT",
+ "x-ms-client-request-id" : "bb28a809-e590-4ae3-9993-3f035141a9d3"
},
"Exception" : null
} ],
- "variables" : [ "jtcipurlparser0helpertestipurlparser2564658662180fcf8" ]
+ "variables" : [ "jtcipurlparser0helpertestipurlparser7ce463622a47679ed" ]
}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[4].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[4].json
index 67c746092450..fb3e51e7d2a3 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[4].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[4].json
@@ -1,23 +1,23 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser74641933e75cfe7b5?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser644098858e6cf048a?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "1adae2d9-a26a-40f3-bdde-abe5e5ef4747"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "61ee7814-e31b-4beb-8e56-d8427f8aa117"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D7536D4D1D670D",
- "Last-Modified" : "Fri, 18 Oct 2019 01:48:40 GMT",
+ "ETag" : "0x8D75793B1CDA072",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:33:35 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "e803f4b2-601e-0129-4556-850061000000",
- "Date" : "Fri, 18 Oct 2019 01:48:40 GMT",
- "x-ms-client-request-id" : "1adae2d9-a26a-40f3-bdde-abe5e5ef4747"
+ "x-ms-request-id" : "dde8b258-401e-0057-647c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:34 GMT",
+ "x-ms-client-request-id" : "61ee7814-e31b-4beb-8e56-d8427f8aa117"
},
"Exception" : null
}, {
@@ -25,8 +25,8 @@
"Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcipurlparser&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "a2652f5b-7d03-452e-8d36-5efaef30b20a"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "1e19108f-13b2-49e8-8bac-4904e015f247"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -34,20 +34,20 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "edcef2ec-f01e-0089-2f56-858952000000",
- "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparser74641933e75cfe7b5Fri, 18 Oct 2019 01:48:40 GMT\"0x8D7536D4D1D670D\"unlockedavailable$account-encryption-keyfalsefalsefalse",
- "Date" : "Fri, 18 Oct 2019 01:48:40 GMT",
- "x-ms-client-request-id" : "a2652f5b-7d03-452e-8d36-5efaef30b20a",
+ "x-ms-request-id" : "dde8b26b-401e-0057-747c-89d9fb000000",
+ "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparser644098858e6cf048aWed, 23 Oct 2019 08:33:35 GMT\"0x8D75793B1CDA072\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:33:35 GMT",
+ "x-ms-client-request-id" : "1e19108f-13b2-49e8-8bac-4904e015f247",
"Content-Type" : "application/xml"
},
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser74641933e75cfe7b5?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser644098858e6cf048a?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "a48584fa-b948-47e0-8755-e4b73c4748b4"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "992e13aa-0b46-4988-9d3e-39756e799604"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -55,11 +55,11 @@
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "202",
- "x-ms-request-id" : "e803f4c6-601e-0129-5556-850061000000",
- "Date" : "Fri, 18 Oct 2019 01:48:40 GMT",
- "x-ms-client-request-id" : "a48584fa-b948-47e0-8755-e4b73c4748b4"
+ "x-ms-request-id" : "dde8b283-401e-0057-087c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:35 GMT",
+ "x-ms-client-request-id" : "992e13aa-0b46-4988-9d3e-39756e799604"
},
"Exception" : null
} ],
- "variables" : [ "jtcipurlparser0helpertestipurlparser74641933e75cfe7b5" ]
+ "variables" : [ "jtcipurlparser0helpertestipurlparser644098858e6cf048a" ]
}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[5].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[5].json
index 8734697e9be4..15b7daab8547 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[5].json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[5].json
@@ -1,23 +1,23 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparsere7c691883442c6c8e?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser3e9326264c2e1cdae?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "bf574c1c-8c28-49be-909d-bbfa8bb27c46"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "11b5a6cb-c227-4b38-9d48-f2ea6f8ee552"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D7536D4D380FB1",
- "Last-Modified" : "Fri, 18 Oct 2019 01:48:40 GMT",
+ "ETag" : "0x8D75793B1F72B85",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:33:35 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "edcef2f8-f01e-0089-3856-858952000000",
- "Date" : "Fri, 18 Oct 2019 01:48:40 GMT",
- "x-ms-client-request-id" : "bf574c1c-8c28-49be-909d-bbfa8bb27c46"
+ "x-ms-request-id" : "dde8b29d-401e-0057-1d7c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:35 GMT",
+ "x-ms-client-request-id" : "11b5a6cb-c227-4b38-9d48-f2ea6f8ee552"
},
"Exception" : null
}, {
@@ -25,8 +25,8 @@
"Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcipurlparser&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "91fe2630-a544-4560-8338-e295ea5b440b"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "3298df08-0f31-424d-bdf4-15478a4484d4"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -34,20 +34,20 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "e803f4db-601e-0129-6456-850061000000",
- "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparsere7c691883442c6c8eFri, 18 Oct 2019 01:48:40 GMT\"0x8D7536D4D380FB1\"unlockedavailable$account-encryption-keyfalsefalsefalse",
- "Date" : "Fri, 18 Oct 2019 01:48:40 GMT",
- "x-ms-client-request-id" : "91fe2630-a544-4560-8338-e295ea5b440b",
+ "x-ms-request-id" : "dde8b2bf-401e-0057-3a7c-89d9fb000000",
+ "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparser3e9326264c2e1cdaeWed, 23 Oct 2019 08:33:35 GMT\"0x8D75793B1F72B85\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:33:35 GMT",
+ "x-ms-client-request-id" : "3298df08-0f31-424d-bdf4-15478a4484d4",
"Content-Type" : "application/xml"
},
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparsere7c691883442c6c8e?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser3e9326264c2e1cdae?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "8a1440b3-7e19-4c03-b2db-edcb0303eb9b"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "181417cd-38a1-4f37-bfc0-a9eb8aae5d94"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -55,11 +55,11 @@
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "202",
- "x-ms-request-id" : "edcef311-f01e-0089-4c56-858952000000",
- "Date" : "Fri, 18 Oct 2019 01:48:40 GMT",
- "x-ms-client-request-id" : "8a1440b3-7e19-4c03-b2db-edcb0303eb9b"
+ "x-ms-request-id" : "dde8b2d7-401e-0057-4d7c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:35 GMT",
+ "x-ms-client-request-id" : "181417cd-38a1-4f37-bfc0-a9eb8aae5d94"
},
"Exception" : null
} ],
- "variables" : [ "jtcipurlparser0helpertestipurlparsere7c691883442c6c8e" ]
+ "variables" : [ "jtcipurlparser0helpertestipurlparser3e9326264c2e1cdae" ]
}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[6].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[6].json
new file mode 100644
index 000000000000..811724731d13
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[6].json
@@ -0,0 +1,65 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser4942004182e03cb24?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "3f89f221-be64-4a1a-a2d8-28c4771c9016"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75793B231D1BE",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:33:35 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "dde8b309-401e-0057-777c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:35 GMT",
+ "x-ms-client-request-id" : "3f89f221-be64-4a1a-a2d8-28c4771c9016"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcipurlparser&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "af8fda8b-bc4d-436d-a8f2-f148e9762504"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "dde8b31c-401e-0057-067c-89d9fb000000",
+ "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparser4942004182e03cb24Wed, 23 Oct 2019 08:33:35 GMT\"0x8D75793B231D1BE\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:33:35 GMT",
+ "x-ms-client-request-id" : "af8fda8b-bc4d-436d-a8f2-f148e9762504",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser4942004182e03cb24?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "a7fc79c3-5b86-41c9-98cd-ab9c6057d642"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "dde8b33d-401e-0057-217c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:35 GMT",
+ "x-ms-client-request-id" : "a7fc79c3-5b86-41c9-98cd-ab9c6057d642"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtcipurlparser0helpertestipurlparser4942004182e03cb24" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[7].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[7].json
new file mode 100644
index 000000000000..0508c1b6c558
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[7].json
@@ -0,0 +1,65 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparserc2623851bc247a6af?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "ec86590b-83db-4b85-aa21-5fc4bdc3f51a"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75793B260B553",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:33:36 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "dde8b379-401e-0057-5a7c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:35 GMT",
+ "x-ms-client-request-id" : "ec86590b-83db-4b85-aa21-5fc4bdc3f51a"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcipurlparser&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "8629a6fe-710c-4d07-a69f-527d54bc1870"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "dde8b3a7-401e-0057-807c-89d9fb000000",
+ "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparserc2623851bc247a6afWed, 23 Oct 2019 08:33:36 GMT\"0x8D75793B260B553\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:33:35 GMT",
+ "x-ms-client-request-id" : "8629a6fe-710c-4d07-a69f-527d54bc1870",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparserc2623851bc247a6af?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "465e87d7-3e1e-4513-867a-ee55015b5ba5"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "dde8b3c6-401e-0057-1d7c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:36 GMT",
+ "x-ms-client-request-id" : "465e87d7-3e1e-4513-867a-ee55015b5ba5"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtcipurlparser0helpertestipurlparserc2623851bc247a6af" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[8].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[8].json
new file mode 100644
index 000000000000..aa1ed8953297
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[8].json
@@ -0,0 +1,65 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser708652267aa04a72c?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "d1491fb3-1357-4def-9997-755b9cefab52"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75793B2931C31",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:33:36 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "dde8b3e8-401e-0057-3c7c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:36 GMT",
+ "x-ms-client-request-id" : "d1491fb3-1357-4def-9997-755b9cefab52"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcipurlparser&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "a879b939-87f0-4fd3-adce-1b25d0a34fe4"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "dde8b3f6-401e-0057-477c-89d9fb000000",
+ "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparser708652267aa04a72cWed, 23 Oct 2019 08:33:36 GMT\"0x8D75793B2931C31\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:33:36 GMT",
+ "x-ms-client-request-id" : "a879b939-87f0-4fd3-adce-1b25d0a34fe4",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparser708652267aa04a72c?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "fa904bba-2b86-494e-b41c-7bd037116bd9"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "dde8b403-401e-0057-547c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:36 GMT",
+ "x-ms-client-request-id" : "fa904bba-2b86-494e-b41c-7bd037116bd9"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtcipurlparser0helpertestipurlparser708652267aa04a72c" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[9].json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[9].json
new file mode 100644
index 000000000000..39315e9b061f
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTestipurlparser[9].json
@@ -0,0 +1,65 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparserbd2448518c8d58565?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "a01d7560-0666-4e7c-8653-f3753231794e"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75793B2C3D4EF",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:33:36 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "dde8b42b-401e-0057-727c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:36 GMT",
+ "x-ms-client-request-id" : "a01d7560-0666-4e7c-8653-f3753231794e"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcipurlparser&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "89365d99-b3eb-4153-b679-10df440b15d9"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "dde8b447-401e-0057-0c7c-89d9fb000000",
+ "Body" : "jtcipurlparserjtcipurlparser0helpertestipurlparserbd2448518c8d58565Wed, 23 Oct 2019 08:33:36 GMT\"0x8D75793B2C3D4EF\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:33:36 GMT",
+ "x-ms-client-request-id" : "89365d99-b3eb-4153-b679-10df440b15d9",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcipurlparser0helpertestipurlparserbd2448518c8d58565?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "c58e33a0-c86c-4c9a-860b-77a846de518a"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "dde8b464-401e-0057-257c-89d9fb000000",
+ "Date" : "Wed, 23 Oct 2019 08:33:36 GMT",
+ "x-ms-client-request-id" : "c58e33a0-c86c-4c9a-860b-77a846de518a"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtcipurlparser0helpertestipurlparserbd2448518c8d58565" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTesturlparser.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTesturlparser.json
index a9f1bbb62d88..a8ae83740914 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTesturlparser.json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/HelperTesturlparser.json
@@ -1,23 +1,23 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparser0helpertesturlparser02006273cc416310486?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparser0helpertesturlparserbf4178062e932afa893?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "15646251-0399-4305-88e4-b01373fe162f"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "80a70e3a-9371-4fca-80f9-ea8490d34beb"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D751AEB52BA1A5",
- "Last-Modified" : "Tue, 15 Oct 2019 20:31:50 GMT",
+ "ETag" : "0x8D75795F33B897C",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:49:43 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "b5cb43fc-d01e-00da-6597-83955d000000",
- "Date" : "Tue, 15 Oct 2019 20:31:50 GMT",
- "x-ms-client-request-id" : "15646251-0399-4305-88e4-b01373fe162f"
+ "x-ms-request-id" : "fe9d662b-b01e-006b-247e-896d20000000",
+ "Date" : "Wed, 23 Oct 2019 08:49:43 GMT",
+ "x-ms-client-request-id" : "80a70e3a-9371-4fca-80f9-ea8490d34beb"
},
"Exception" : null
}, {
@@ -25,8 +25,8 @@
"Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcurlparser&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "178e2295-73f7-44cf-b357-d942a2f2ae8b"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "1accf6d9-9874-430f-a4f6-fa8651c0ef5b"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -34,20 +34,20 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "83684882-801e-004a-2497-830011000000",
- "Body" : "jtcurlparserjtcurlparser0helpertesturlparser02006273cc416310486Tue, 15 Oct 2019 20:31:50 GMT\"0x8D751AEB52BA1A5\"unlockedavailable$account-encryption-keyfalsefalsefalse",
- "Date" : "Tue, 15 Oct 2019 20:31:50 GMT",
- "x-ms-client-request-id" : "178e2295-73f7-44cf-b357-d942a2f2ae8b",
+ "x-ms-request-id" : "fe9d664e-b01e-006b-3f7e-896d20000000",
+ "Body" : "jtcurlparserjtcurlparser0helpertesturlparserbf4178062e932afa893Wed, 23 Oct 2019 08:49:43 GMT\"0x8D75795F33B897C\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:49:43 GMT",
+ "x-ms-client-request-id" : "1accf6d9-9874-430f-a4f6-fa8651c0ef5b",
"Content-Type" : "application/xml"
},
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparser0helpertesturlparser02006273cc416310486?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparser0helpertesturlparserbf4178062e932afa893?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "d9be20d7-bef7-4849-a706-8c714121e583"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "931bfce9-f532-489f-995a-0d530d0eb150"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -55,11 +55,11 @@
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "202",
- "x-ms-request-id" : "87149064-401e-011c-1097-83ae34000000",
- "Date" : "Tue, 15 Oct 2019 20:31:49 GMT",
- "x-ms-client-request-id" : "d9be20d7-bef7-4849-a706-8c714121e583"
+ "x-ms-request-id" : "fe9d665e-b01e-006b-4c7e-896d20000000",
+ "Date" : "Wed, 23 Oct 2019 08:49:43 GMT",
+ "x-ms-client-request-id" : "931bfce9-f532-489f-995a-0d530d0eb150"
},
"Exception" : null
} ],
- "variables" : [ "jtcurlparser0helpertesturlparser02006273cc416310486" ]
+ "variables" : [ "jtcurlparser0helpertesturlparserbf4178062e932afa893" ]
}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetblobnameandbuildclient.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetblobnameandbuildclient.json
new file mode 100644
index 000000000000..48e0cbee261c
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/PageBlobAPITestgetblobnameandbuildclient.json
@@ -0,0 +1,87 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcgetblobnameandbuildclient0284911891af2314414f?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "9192fd1e-7565-4db7-a096-57f5cabc548f"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D757969A854FC8",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:54:24 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "a11dbdb4-801e-0063-647f-897653000000",
+ "Date" : "Wed, 23 Oct 2019 08:54:23 GMT",
+ "x-ms-client-request-id" : "9192fd1e-7565-4db7-a096-57f5cabc548f"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcgetblobnameandbuildclient0284911891af2314414f/javablobgetblobnameandbuildclient108874019327de134e",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "2620b8f2-ef09-435e-99bc-26bdb97082bd"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D757969A95BE3E",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:54:24 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "a11dbddc-801e-0063-7f7f-897653000000",
+ "x-ms-request-server-encrypted" : "true",
+ "Date" : "Wed, 23 Oct 2019 08:54:23 GMT",
+ "x-ms-client-request-id" : "2620b8f2-ef09-435e-99bc-26bdb97082bd"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcgetblobnameandbuildclient&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "f3ca6d95-cde6-44fe-8b39-bdcb87588160"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "a11dbdef-801e-0063-0c7f-897653000000",
+ "Body" : "jtcgetblobnameandbuildclientjtcgetblobnameandbuildclient0284911891af2314414fWed, 23 Oct 2019 08:54:24 GMT\"0x8D757969A854FC8\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:54:23 GMT",
+ "x-ms-client-request-id" : "f3ca6d95-cde6-44fe-8b39-bdcb87588160",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcgetblobnameandbuildclient0284911891af2314414f?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "bafd2878-1410-4173-8748-16bf046e44be"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "a11dbe12-801e-0063-227f-897653000000",
+ "Date" : "Wed, 23 Oct 2019 08:54:23 GMT",
+ "x-ms-client-request-id" : "bafd2878-1410-4173-8748-16bf046e44be"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtcgetblobnameandbuildclient0284911891af2314414f", "javablobgetblobnameandbuildclient108874019327de134e" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparser.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparser.json
index 1935e196e21c..4f5d03422af3 100644
--- a/sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparser.json
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparser.json
@@ -1,23 +1,23 @@
{
"networkCallRecords" : [ {
"Method" : "PUT",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparser0sastesturlparser89827358ba646427f1bc4?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparser0sastesturlparser089052061c2b316d8cd34?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "6b868edc-44ff-41a3-ad4d-1e6a159b4840"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "ad241e8d-64a0-4e32-8c20-1e617484d677"
},
"Response" : {
"x-ms-version" : "2019-02-02",
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
- "ETag" : "0x8D751AE29BEC1BD",
- "Last-Modified" : "Tue, 15 Oct 2019 20:27:56 GMT",
+ "ETag" : "0x8D75793302B4707",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:29:57 GMT",
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "201",
- "x-ms-request-id" : "69fa6f15-c01e-012f-4597-83f719000000",
- "Date" : "Tue, 15 Oct 2019 20:27:56 GMT",
- "x-ms-client-request-id" : "6b868edc-44ff-41a3-ad4d-1e6a159b4840"
+ "x-ms-request-id" : "71b318fe-d01e-0059-457c-8935f0000000",
+ "Date" : "Wed, 23 Oct 2019 08:29:57 GMT",
+ "x-ms-client-request-id" : "ad241e8d-64a0-4e32-8c20-1e617484d677"
},
"Exception" : null
}, {
@@ -25,8 +25,8 @@
"Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcurlparser&comp=list",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "780c0518-df7c-48ff-9417-0c742436cccb"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "69580b81-f805-43b2-a74a-5377be21baab"
},
"Response" : {
"Transfer-Encoding" : "chunked",
@@ -34,20 +34,20 @@
"Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
"retry-after" : "0",
"StatusCode" : "200",
- "x-ms-request-id" : "8074be64-501e-002e-7497-83b0b1000000",
- "Body" : "jtcurlparserjtcurlparser0sastesturlparser89827358ba646427f1bc4Tue, 15 Oct 2019 20:27:56 GMT\"0x8D751AE29BEC1BD\"unlockedavailable$account-encryption-keyfalsefalsefalse",
- "Date" : "Tue, 15 Oct 2019 20:27:55 GMT",
- "x-ms-client-request-id" : "780c0518-df7c-48ff-9417-0c742436cccb",
+ "x-ms-request-id" : "71b31918-d01e-0059-577c-8935f0000000",
+ "Body" : "jtcurlparserjtcurlparser0sastesturlparser089052061c2b316d8cd34Wed, 23 Oct 2019 08:29:57 GMT\"0x8D75793302B4707\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:29:57 GMT",
+ "x-ms-client-request-id" : "69580b81-f805-43b2-a74a-5377be21baab",
"Content-Type" : "application/xml"
},
"Exception" : null
}, {
"Method" : "DELETE",
- "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparser0sastesturlparser89827358ba646427f1bc4?restype=container",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparser0sastesturlparser089052061c2b316d8cd34?restype=container",
"Headers" : {
"x-ms-version" : "2019-02-02",
- "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 11.0.4; Windows 10 10.0",
- "x-ms-client-request-id" : "5bc7d752-c6ab-4f10-8efe-34c4b1870363"
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "1a4b0b77-4eb7-49c5-8814-9c696f40bbfd"
},
"Response" : {
"x-ms-version" : "2019-02-02",
@@ -55,11 +55,11 @@
"retry-after" : "0",
"Content-Length" : "0",
"StatusCode" : "202",
- "x-ms-request-id" : "69fa6f74-c01e-012f-1297-83f719000000",
- "Date" : "Tue, 15 Oct 2019 20:27:56 GMT",
- "x-ms-client-request-id" : "5bc7d752-c6ab-4f10-8efe-34c4b1870363"
+ "x-ms-request-id" : "71b31933-d01e-0059-6c7c-8935f0000000",
+ "Date" : "Wed, 23 Oct 2019 08:29:57 GMT",
+ "x-ms-client-request-id" : "1a4b0b77-4eb7-49c5-8814-9c696f40bbfd"
},
"Exception" : null
} ],
- "variables" : [ "jtcurlparser0sastesturlparser89827358ba646427f1bc4" ]
+ "variables" : [ "jtcurlparser0sastesturlparser089052061c2b316d8cd34" ]
}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparserblobnamespecialcharacters.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparserblobnamespecialcharacters.json
new file mode 100644
index 000000000000..a10b882e3eaf
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparserblobnamespecialcharacters.json
@@ -0,0 +1,103 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparserblobnamespecialcharacters082998e6c9b8d395?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "cf66438b-dbbd-45a1-95c8-ebbb21585912"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D75790B1729006",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:12:06 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "1aad7bd8-501e-012a-1079-890366000000",
+ "Date" : "Wed, 23 Oct 2019 08:12:05 GMT",
+ "x-ms-client-request-id" : "cf66438b-dbbd-45a1-95c8-ebbb21585912"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcurlparserblobnamespecialcharacters&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "594b5d5a-9d7b-4f35-ac02-fcfbc7bf436c"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "1aad7c0d-501e-012a-3679-890366000000",
+ "Body" : "jtcurlparserblobnamespecialcharactersjtcurlparserblobnamespecialcharacters01600310439ad4eeWed, 23 Oct 2019 08:11:15 GMT\"0x8D75790935A87B1\"unlockedavailable$account-encryption-keyfalsefalsefalsejtcurlparserblobnamespecialcharacters04653122222038f2Wed, 23 Oct 2019 08:11:38 GMT\"0x8D75790A13F7308\"unlockedavailable$account-encryption-keyfalsefalsefalsejtcurlparserblobnamespecialcharacters082998e6c9b8d395Wed, 23 Oct 2019 08:12:06 GMT\"0x8D75790B1729006\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:12:06 GMT",
+ "x-ms-client-request-id" : "594b5d5a-9d7b-4f35-ac02-fcfbc7bf436c",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparserblobnamespecialcharacters01600310439ad4ee?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "ab10836a-fae1-4744-815e-364526c19880"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "1aad7c3c-501e-012a-5479-890366000000",
+ "Date" : "Wed, 23 Oct 2019 08:12:06 GMT",
+ "x-ms-client-request-id" : "ab10836a-fae1-4744-815e-364526c19880"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparserblobnamespecialcharacters04653122222038f2?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "700aa09e-6115-4c46-bf62-848111bd4178"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "1aad7c57-501e-012a-6279-890366000000",
+ "Date" : "Wed, 23 Oct 2019 08:12:06 GMT",
+ "x-ms-client-request-id" : "700aa09e-6115-4c46-bf62-848111bd4178"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparserblobnamespecialcharacters082998e6c9b8d395?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "c1dd5837-d0b6-46a8-b458-a313656eab2b"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "1aad7c69-501e-012a-7179-890366000000",
+ "Date" : "Wed, 23 Oct 2019 08:12:06 GMT",
+ "x-ms-client-request-id" : "c1dd5837-d0b6-46a8-b458-a313656eab2b"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtcurlparserblobnamespecialcharacters082998e6c9b8d395" ]
+}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparserencodedblobname.json b/sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparserencodedblobname.json
new file mode 100644
index 000000000000..9c9aa0d2204b
--- /dev/null
+++ b/sdk/storage/azure-storage-blob/src/test/resources/session-records/SASTesturlparserencodedblobname.json
@@ -0,0 +1,65 @@
+{
+ "networkCallRecords" : [ {
+ "Method" : "PUT",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparserencodedblobname07623313c8cdb76e9f411?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "24510e67-d118-4630-8196-fb6dcab7a2fd"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "ETag" : "0x8D7578FB2BA51D9",
+ "Last-Modified" : "Wed, 23 Oct 2019 08:04:58 GMT",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "201",
+ "x-ms-request-id" : "717ff5ac-601e-00a5-7478-890b6f000000",
+ "Date" : "Wed, 23 Oct 2019 08:04:58 GMT",
+ "x-ms-client-request-id" : "24510e67-d118-4630-8196-fb6dcab7a2fd"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "GET",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net?prefix=jtcurlparserencodedblobname&comp=list",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "6c4bba91-9144-4988-a21d-bec0141a8cd8"
+ },
+ "Response" : {
+ "Transfer-Encoding" : "chunked",
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "StatusCode" : "200",
+ "x-ms-request-id" : "717ff629-601e-00a5-5d78-890b6f000000",
+ "Body" : "jtcurlparserencodedblobnamejtcurlparserencodedblobname07623313c8cdb76e9f411Wed, 23 Oct 2019 08:04:58 GMT\"0x8D7578FB2BA51D9\"unlockedavailable$account-encryption-keyfalsefalsefalse",
+ "Date" : "Wed, 23 Oct 2019 08:04:58 GMT",
+ "x-ms-client-request-id" : "6c4bba91-9144-4988-a21d-bec0141a8cd8",
+ "Content-Type" : "application/xml"
+ },
+ "Exception" : null
+ }, {
+ "Method" : "DELETE",
+ "Uri" : "https://azstoragesdkaccount.blob.core.windows.net/jtcurlparserencodedblobname07623313c8cdb76e9f411?restype=container",
+ "Headers" : {
+ "x-ms-version" : "2019-02-02",
+ "User-Agent" : "azsdk-java-azure-storage-blob/12.0.0-preview.5 1.8.0_221; Windows 10 10.0",
+ "x-ms-client-request-id" : "fcf5a489-ddd4-4fcc-824a-7107c6fb33ff"
+ },
+ "Response" : {
+ "x-ms-version" : "2019-02-02",
+ "Server" : "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0",
+ "retry-after" : "0",
+ "Content-Length" : "0",
+ "StatusCode" : "202",
+ "x-ms-request-id" : "717ff66e-601e-00a5-1978-890b6f000000",
+ "Date" : "Wed, 23 Oct 2019 08:04:58 GMT",
+ "x-ms-client-request-id" : "fcf5a489-ddd4-4fcc-824a-7107c6fb33ff"
+ },
+ "Exception" : null
+ } ],
+ "variables" : [ "jtcurlparserencodedblobname07623313c8cdb76e9f411" ]
+}
\ No newline at end of file
From 2172d807a482c5fa3c05d2a1ffe1e8d2cf4febdf Mon Sep 17 00:00:00 2001
From: Victor Colin Amador
Date: Wed, 23 Oct 2019 11:32:01 -0700
Subject: [PATCH 09/10] Because we are doing encoding blob names implicitly,
there is no point in telling the user we are doing this, so I removed parts
of the Javadoc that referenced the fact. For the sake of clarity, I added the
the Javadoc in blob name getters so that users know the returned blob name
will always be decoded (it's possible they set an encoded name and expect to
see the same value from the get method). Also added a clarification that
states blob names must be encoded to UTF-8 to the Javadoc of methods that
take blob URLs as an argument.
---
.../azure/storage/blob/batch/BlobBatch.java | 16 ++++-----------
.../blob/batch/BlobBatchAsyncClient.java | 4 ++--
.../storage/blob/batch/BlobBatchClient.java | 8 ++++----
.../EncryptedBlobAsyncClient.java | 2 --
.../EncryptedBlobClientBuilder.java | 8 --------
.../azure/storage/blob/BlobAsyncClient.java | 4 ----
.../azure/storage/blob/BlobClientBuilder.java | 8 --------
.../blob/BlobContainerAsyncClient.java | 4 ----
.../storage/blob/BlobContainerClient.java | 4 ----
.../com/azure/storage/blob/BlobUrlParts.java | 12 ++---------
.../specialized/AppendBlobAsyncClient.java | 2 --
.../blob/specialized/BlobAsyncClientBase.java | 6 ++----
.../blob/specialized/BlobClientBase.java | 4 ++--
.../BlobServiceSasSignatureValues.java | 6 ++----
.../specialized/BlockBlobAsyncClient.java | 2 --
.../blob/specialized/PageBlobAsyncClient.java | 2 --
.../SpecializedBlobClientBuilder.java | 20 -------------------
17 files changed, 18 insertions(+), 94 deletions(-)
diff --git a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
index f6fd34107e34..b883efaac122 100644
--- a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
+++ b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatch.java
@@ -126,8 +126,6 @@ public final class BlobBatch {
/**
* Adds a delete blob operation to the batch.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code sample
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.deleteBlob#String-String}
@@ -146,8 +144,6 @@ public Response deleteBlob(String containerName, String blobName) {
/**
* Adds a delete blob operation to the batch.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code sample
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.deleteBlob#String-String-DeleteSnapshotsOptionType-BlobRequestConditions}
@@ -173,7 +169,7 @@ public Response deleteBlob(String containerName, String blobName,
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.deleteBlob#String}
*
- * @param blobUrl URL of the blob.
+ * @param blobUrl URL of the blob. Blob name must be encoded to UTF-8.
* @return a {@link Response} that will be used to associate this operation to the response when the batch is
* submitted.
* @throws UnsupportedOperationException If this batch has already added an operation of another type.
@@ -189,7 +185,7 @@ public Response deleteBlob(String blobUrl) {
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.deleteBlob#String-DeleteSnapshotsOptionType-BlobRequestConditions}
*
- * @param blobUrl URL of the blob.
+ * @param blobUrl URL of the blob. Blob name must be encoded to UTF-8.
* @param deleteOptions Delete options for the blob and its snapshots.
* @param blobRequestConditions Additional access conditions that must be met to allow this operation.
* @return a {@link Response} that will be used to associate this operation to the response when the batch is
@@ -211,8 +207,6 @@ private Response deleteBlobHelper(String urlPath, DeleteSnapshotsOptionTyp
/**
* Adds a set tier operation to the batch.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code sample
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.setBlobAccessTier#String-String-AccessTier}
@@ -232,8 +226,6 @@ public Response setBlobAccessTier(String containerName, String blobName, A
/**
* Adds a set tier operation to the batch.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code sample
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.setBlobAccessTier#String-String-AccessTier-String}
@@ -259,7 +251,7 @@ public Response setBlobAccessTier(String containerName, String blobName, A
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.setBlobAccessTier#String-AccessTier}
*
- * @param blobUrl URL of the blob.
+ * @param blobUrl URL of the blob. Blob name must be encoded to UTF-8.
* @param accessTier The tier to set on the blob.
* @return a {@link Response} that will be used to associate this operation to the response when the batch is
* submitted.
@@ -276,7 +268,7 @@ public Response setBlobAccessTier(String blobUrl, AccessTier accessTier) {
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatch.setBlobAccessTier#String-AccessTier-String}
*
- * @param blobUrl URL of the blob.
+ * @param blobUrl URL of the blob. Blob name must be encoded to UTF-8.
* @param accessTier The tier to set on the blob.
* @param leaseId The lease ID the active lease on the blob must match.
* @return a {@link Response} that will be used to associate this operation to the response when the batch is
diff --git a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatchAsyncClient.java b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatchAsyncClient.java
index 58c20f41c43a..996da9237ac1 100644
--- a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatchAsyncClient.java
+++ b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatchAsyncClient.java
@@ -128,7 +128,7 @@ Mono> submitBatchWithResponse(BlobBatch batch, boolean throwOnAny
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatchAsyncClient.deleteBlobs#List-DeleteSnapshotsOptionType}
*
- * @param blobUrls Urls of the blobs to delete.
+ * @param blobUrls Urls of the blobs to delete. Blob names must be encoded to UTF-8.
* @param deleteOptions The deletion option for all blobs.
* @return The status of each delete operation.
* @throws BlobStorageException If the batch request is malformed.
@@ -162,7 +162,7 @@ private Mono>> submitDeleteBlobsBatch(List
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatchAsyncClient.setBlobsAccessTier#List-AccessTier}
*
- * @param blobUrls Urls of the blobs to set their access tier.
+ * @param blobUrls Urls of the blobs to set their access tier. Blob names must be encoded to UTF-8.
* @param accessTier {@link AccessTier} to set on each blob.
* @return The status of each set tier operation.
* @throws BlobStorageException If the batch request is malformed.
diff --git a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatchClient.java b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatchClient.java
index 1d650ee037f7..f49c1a1d49b3 100644
--- a/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatchClient.java
+++ b/sdk/storage/azure-storage-blob-batch/src/main/java/com/azure/storage/blob/batch/BlobBatchClient.java
@@ -95,7 +95,7 @@ public Response submitBatchWithResponse(BlobBatch batch, boolean throwOnAn
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatchClient.deleteBlobs#List-DeleteSnapshotsOptionType}
*
- * @param blobUrls Urls of the blobs to delete.
+ * @param blobUrls Urls of the blobs to delete. Blob names must be encoded to UTF-8.
* @param deleteOptions The deletion option for all blobs.
* @return The status of each delete operation.
* @throws BlobStorageException If the batch request is malformed.
@@ -113,7 +113,7 @@ public PagedIterable> deleteBlobs(List blobUrls, DeleteSn
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatchClient.deleteBlobs#List-DeleteSnapshotsOptionType-Duration-Context}
*
- * @param blobUrls Urls of the blobs to delete.
+ * @param blobUrls Urls of the blobs to delete. Blob names must be encoded to UTF-8.
* @param deleteOptions The deletion option for all blobs.
* @param timeout An optional timeout value beyond which a {@link RuntimeException} will be raised.
* @param context Additional context that is passed through the Http pipeline during the service call.
@@ -135,7 +135,7 @@ public PagedIterable> deleteBlobs(List blobUrls, DeleteSn
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatchClient.setBlobsAccessTier#List-AccessTier}
*
- * @param blobUrls Urls of the blobs to set their access tier.
+ * @param blobUrls Urls of the blobs to set their access tier. Blob names must be encoded to UTF-8.
* @param accessTier {@link AccessTier} to set on each blob.
* @return The status of each set tier operation.
* @throws BlobStorageException If the batch request is malformed.
@@ -153,7 +153,7 @@ public PagedIterable> setBlobsAccessTier(List blobUrls, A
*
* {@codesnippet com.azure.storage.blob.batch.BlobBatchClient.setBlobsAccessTier#List-AccessTier-Duration-Context}
*
- * @param blobUrls Urls of the blobs to set their access tier.
+ * @param blobUrls Urls of the blobs to set their access tier. Blob names must be encoded to UTF-8.
* @param accessTier {@link AccessTier} to set on each blob.
* @param timeout An optional timeout value beyond which a {@link RuntimeException} will be raised.
* @param context Additional context that is passed through the Http pipeline during the service call.
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobAsyncClient.java b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobAsyncClient.java
index fb7f658c0be1..5ec355138193 100644
--- a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobAsyncClient.java
+++ b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobAsyncClient.java
@@ -86,8 +86,6 @@ public class EncryptedBlobAsyncClient extends BlobAsyncClient {
/**
* Package-private constructor for use by {@link EncryptedBlobClientBuilder}.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
diff --git a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
index 6705cc3dda35..1aa0187081dd 100644
--- a/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob-cryptography/src/main/java/com/azure/storage/blob/specialized/cryptography/EncryptedBlobClientBuilder.java
@@ -105,8 +105,6 @@ public EncryptedBlobClientBuilder() {
/**
* Creates a {@link EncryptedBlobClient} based on options set in the Builder.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.specialized.cryptography.EncryptedBlobClientBuilder.buildEncryptedBlobAsyncClient}
@@ -121,8 +119,6 @@ public EncryptedBlobClient buildEncryptedBlobClient() {
/**
* Creates a {@link EncryptedBlobAsyncClient} based on options set in the Builder.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.specialized.cryptography.EncryptedBlobClientBuilder.buildEncryptedBlobClient}
@@ -329,8 +325,6 @@ public EncryptedBlobClientBuilder connectionString(String connectionString) {
* with blobs in the root container, it is best to set the endpoint to the account url and specify the blob name
* separately using the {@link EncryptedBlobClientBuilder#blobName(String) blobName} method.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param endpoint URL of the service
* @return the updated EncryptedBlobClientBuilder object
* @throws IllegalArgumentException If {@code endpoint} is {@code null} or is a malformed URL.
@@ -372,8 +366,6 @@ public EncryptedBlobClientBuilder containerName(String containerName) {
/**
* Sets the name of the blob.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param blobName Name of the blob.
* @return the updated EncryptedBlobClientBuilder object
* @throws NullPointerException If {@code blobName} is {@code null}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobAsyncClient.java
index c36d34e86f26..873969b6d9e8 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobAsyncClient.java
@@ -82,8 +82,6 @@ public class BlobAsyncClient extends BlobAsyncClientBase {
/**
* Package-private constructor for use by {@link BlobClientBuilder}.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
@@ -102,8 +100,6 @@ protected BlobAsyncClient(HttpPipeline pipeline, String url, BlobServiceVersion
/**
* Creates a new {@link BlobAsyncClient} linked to the {@code snapshot} of this blob resource.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param snapshot the identifier for a specific snapshot of this blob
*
* @return a {@link BlobAsyncClient} used to interact with the specific snapshot.
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
index 340cc164a812..58505cefcbc2 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobClientBuilder.java
@@ -84,8 +84,6 @@ public BlobClientBuilder() {
* methods such as {@link BlobClient#download(OutputStream) download} and {@link BlobClient#getProperties() get
* properties}, use this when the blob type is unknown.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.BlobClientBuilder.buildClient}
@@ -102,8 +100,6 @@ public BlobClient buildClient() {
* generic blob methods such as {@link BlobAsyncClient#download() download} and {@link
* BlobAsyncClient#getProperties()}, use this when the blob type is unknown.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.BlobClientBuilder.buildAsyncClient}
@@ -256,8 +252,6 @@ public BlobClientBuilder connectionString(String connectionString) {
* with blobs in the root container, it is best to set the endpoint to the account url and specify the blob name
* separately using the {@link BlobClientBuilder#blobName(String) blobName} method.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param endpoint URL of the service
* @return the updated BlobClientBuilder object
* @throws IllegalArgumentException If {@code endpoint} is {@code null} or is a malformed URL.
@@ -299,8 +293,6 @@ public BlobClientBuilder containerName(String containerName) {
/**
* Sets the name of the blob.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param blobName Name of the blob.
* @return the updated BlobClientBuilder object
* @throws NullPointerException If {@code blobName} is {@code null}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
index 9b5f80bfb763..94840206641c 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerAsyncClient.java
@@ -114,8 +114,6 @@ public final class BlobContainerAsyncClient {
* the BlobAsyncClient and then call its WithPipeline method passing in the desired pipeline object. Or, call this
* package's getBlobAsyncClient instead of calling this object's getBlobAsyncClient method.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.BlobContainerAsyncClient.getBlobAsyncClient#String}
@@ -133,8 +131,6 @@ public BlobAsyncClient getBlobAsyncClient(String blobName) {
* the BlobAsyncClient and then call its WithPipeline method passing in the desired pipeline object. Or, call this
* package's getBlobAsyncClient instead of calling this object's getBlobAsyncClient method.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.BlobContainerAsyncClient.getBlobAsyncClient#String-String}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerClient.java
index db9c3bc65489..5004e1df589e 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobContainerClient.java
@@ -65,8 +65,6 @@ public final class BlobContainerClient {
* BlobClient and then call its WithPipeline method passing in the desired pipeline object. Or, call this package's
* getBlobAsyncClient instead of calling this object's getBlobAsyncClient method.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param blobName A {@code String} representing the name of the blob.
*
* Code Samples
@@ -84,8 +82,6 @@ public BlobClient getBlobClient(String blobName) {
* BlobClient and then call its WithPipeline method passing in the desired pipeline object. Or, call this package's
* getBlobAsyncClient instead of calling this object's getBlobAsyncClient method.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* Code Samples
*
* {@codesnippet com.azure.storage.blob.BlobContainerClient.getBlobClient#String-String}
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
index ab6156f666ac..b887b932c86f 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java
@@ -127,9 +127,9 @@ public BlobUrlParts setContainerName(String containerName) {
}
/**
- * Gets the blob name that will be used as part of the URL path.
+ * Decodes and gets the blob name that will be used as part of the URL path.
*
- * @return the blob name.
+ * @return the decoded blob name.
*/
public String getBlobName() {
return (blobName == null) ? null : Utility.urlDecode(blobName);
@@ -138,8 +138,6 @@ public String getBlobName() {
/**
* Sets the blob name that will be used as part of the URL path.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param blobName The blob name.
* @return the updated BlobUrlParts object.
*/
@@ -213,8 +211,6 @@ public BlobUrlParts setUnparsedParameters(Map unparsedParamete
/**
* Converts the blob URL parts to a {@link URL}.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @return A {@code URL} to the blob resource composed of all the elements in this object.
* @throws IllegalStateException The fields present on the BlobUrlParts object were insufficient to construct a
* valid URL or were ill-formatted.
@@ -271,8 +267,6 @@ public URL toUrl() {
* is no path element for the container, the name of this blob in the root container will be set as the
* containerName field in the resulting {@code BlobURLParts}.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param url The {@code URL} to be parsed.
* @return A {@link BlobUrlParts} object containing all the components of a BlobURL.
* @throws IllegalArgumentException If {@code url} is a malformed {@link URL}.
@@ -296,8 +290,6 @@ public static BlobUrlParts parse(String url) {
* is no path element for the container, the name of this blob in the root container will be set as the
* containerName field in the resulting {@code BlobURLParts}.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param url The {@code URL} to be parsed.
* @return A {@link BlobUrlParts} object containing all the components of a BlobURL.
*/
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/AppendBlobAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/AppendBlobAsyncClient.java
index 97d0c2f288ba..8218d2463911 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/AppendBlobAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/AppendBlobAsyncClient.java
@@ -73,8 +73,6 @@ public final class AppendBlobAsyncClient extends BlobAsyncClientBase {
/**
* Package-private constructor for use by {@link SpecializedBlobClientBuilder}.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
index 51aeadda3d2c..3f1444313efd 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobAsyncClientBase.java
@@ -93,8 +93,6 @@ public class BlobAsyncClientBase {
/**
* Package-private constructor for use by {@link SpecializedBlobClientBuilder}.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
@@ -163,13 +161,13 @@ public final String getContainerName() {
}
/**
- * Get the blob name.
+ * Decodes and gets the blob name.
*
* Code Samples
*
* {@codesnippet com.azure.storage.blob.specialized.BlobAsyncClientBase.getBlobName}
*
- * @return The name of the blob.
+ * @return The decoded name of the blob.
*/
public final String getBlobName() {
return (blobName == null) ? null : Utility.urlDecode(blobName);
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java
index babd7a826b1a..bca40cb49283 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobClientBase.java
@@ -103,13 +103,13 @@ public final String getContainerName() {
}
/**
- * Get the blob name.
+ * Decodes and gets the blob name.
*
* Code Samples
*
* {@codesnippet com.azure.storage.blob.specialized.BlobClientBase.getBlobName}
*
- * @return The name of the blob.
+ * @return The decoded name of the blob.
*/
public final String getBlobName() {
return client.getBlobName();
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java
index c7f5e97fc1db..45c1e346bf1e 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java
@@ -281,10 +281,10 @@ public BlobServiceSasSignatureValues setContainerName(String containerName) {
}
/**
- * Gets the name of the blob the SAS user may access. {@code null} or an empty string is returned when a
+ * Decodes and gets the name of the blob the SAS user may access. {@code null} or an empty string is returned when a
* creating a container SAS.
*
- * @return The name of the blob the SAS user may access. {@code null} or an empty string is returned when a
+ * @return The decoded name of the blob the SAS user may access. {@code null} or an empty string is returned when a
* creating a container SAS.
*/
public String getBlobName() {
@@ -294,8 +294,6 @@ public String getBlobName() {
/**
* Sets the blob the SAS user may access. Use {@code null} or an empty string to create a container SAS.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param blobName The name of the blob. Use {@code null} or an empty string to create a container SAS.
* @return The updated BlobServiceSASSignatureValues object.
*/
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlockBlobAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlockBlobAsyncClient.java
index b804a56069ee..d5dc02b4767d 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlockBlobAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlockBlobAsyncClient.java
@@ -73,8 +73,6 @@ public final class BlockBlobAsyncClient extends BlobAsyncClientBase {
/**
* Package-private constructor for use by {@link SpecializedBlobClientBuilder}.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/PageBlobAsyncClient.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/PageBlobAsyncClient.java
index 47f24bfd75cd..4e1ec64ff878 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/PageBlobAsyncClient.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/PageBlobAsyncClient.java
@@ -74,8 +74,6 @@ public final class PageBlobAsyncClient extends BlobAsyncClientBase {
/**
* Package-private constructor for use by {@link SpecializedBlobClientBuilder}.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param pipeline The pipeline used to send and receive service requests.
* @param url The endpoint where to send service requests.
* @param serviceVersion The version of the service to receive requests.
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
index 7f73a24a46ee..f892e358f956 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/SpecializedBlobClientBuilder.java
@@ -85,8 +85,6 @@ public final class SpecializedBlobClientBuilder {
* append blob specific operations such as {@link AppendBlobClient#appendBlock(InputStream, long) append block},
* only use this when the blob is known to be an append blob.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @return a {@link AppendBlobClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -99,8 +97,6 @@ public AppendBlobClient buildAppendBlobClient() {
* perform append blob specific operations such as {@link AppendBlobAsyncClient#appendBlock(Flux, long) append
* blob}, only use this when the blob is known to be an append blob.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @return a {@link AppendBlobAsyncClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -119,8 +115,6 @@ public AppendBlobAsyncClient buildAppendBlobAsyncClient() {
* blob specific operations such as {@link BlockBlobClient#stageBlock(String, InputStream, long) stage block} and
* {@link BlockBlobClient#commitBlockList(List)}, only use this when the blob is known to be a block blob.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @return a {@link BlockBlobClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -135,8 +129,6 @@ public BlockBlobClient buildBlockBlobClient() {
* String) stage block} and {@link BlockBlobAsyncClient#commitBlockList(List) commit block list}, only use this
* when the blob is known to be a block blob.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @return a {@link BlockBlobAsyncClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -155,8 +147,6 @@ public BlockBlobAsyncClient buildBlockBlobAsyncClient() {
* {@link PageBlobClient#clearPages(PageRange) clear pages}, only use this when the blob is known to be a page
* blob.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @return a {@link PageBlobClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -170,8 +160,6 @@ public PageBlobClient buildPageBlobClient() {
* pages} and {@link PageBlobAsyncClient#clearPages(PageRange) clear pages}, only use this when the blob is known to
* be a page blob.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @return a {@link PageBlobAsyncClient} created from the configurations in this builder.
* @throws NullPointerException If {@code endpoint}, {@code containerName}, or {@code blobName} is {@code null}.
*/
@@ -258,8 +246,6 @@ public SpecializedBlobClientBuilder blobAsyncClient(BlobAsyncClientBase blobAsyn
/**
* Configures the builder based on the {@link BlobContainerClient} and appends the blob name to the container's URL.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param blobContainerClient The {@code ContainerClient} used to configure this builder.
* @param blobName Name of the blob.
* @return the updated SpecializedBlobClientBuilder object.
@@ -277,8 +263,6 @@ public SpecializedBlobClientBuilder containerClient(BlobContainerClient blobCont
* Configures the builder based on the {@link BlobContainerAsyncClient} and appends the blob name to the container's
* URL.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param blobContainerAsyncClient The {@code ContainerAsyncClient} used to configure this builder.
* @param blobName Name of the blob.
* @return the updated SpecializedBlobClientBuilder object.
@@ -296,8 +280,6 @@ public SpecializedBlobClientBuilder containerAsyncClient(BlobContainerAsyncClien
/**
* Sets the service endpoint, additionally parses it for information (SAS token, container name, blob name)
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param endpoint URL of the service
* @return the updated SpecializedBlobClientBuilder object
* @throws IllegalArgumentException If {@code endpoint} is {@code null} or is a malformed URL.
@@ -449,8 +431,6 @@ public SpecializedBlobClientBuilder containerName(String containerName) {
/**
* Sets the name of the blob.
*
- * Blob name is encoded to UTF-8 using the {@link com.azure.storage.common.Utility#urlEncode(String)} method.
- *
* @param blobName Name of the blob.
* @return the updated SpecializedBlobClientBuilder object
* @throws NullPointerException If {@code blobName} is {@code null}
From 6489555aba858a57161a80c77df43e369bdab687 Mon Sep 17 00:00:00 2001
From: Victor Colin Amador
Date: Wed, 23 Oct 2019 14:21:52 -0700
Subject: [PATCH 10/10] Made sure that the blobName used to generate a SAS
signature is decoded. According to Rick Ley from the Storage team: "storage
account name and the resource name must be URL-decoded".
---
.../blob/specialized/BlobServiceSasSignatureValues.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java
index 45c1e346bf1e..7b776f40b619 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/BlobServiceSasSignatureValues.java
@@ -288,7 +288,7 @@ public BlobServiceSasSignatureValues setContainerName(String containerName) {
* creating a container SAS.
*/
public String getBlobName() {
- return (blobName == null) ? null : Utility.urlDecode(blobName);
+ return blobName;
}
/**
@@ -298,7 +298,7 @@ public String getBlobName() {
* @return The updated BlobServiceSASSignatureValues object.
*/
public BlobServiceSasSignatureValues setBlobName(String blobName) {
- this.blobName = Utility.urlEncode(Utility.urlDecode(blobName));
+ this.blobName = (blobName == null) ? null : Utility.urlDecode(blobName);
return this;
}