From 8b1b133db2878646a59eab3c5fddba0143f7d0b9 Mon Sep 17 00:00:00 2001 From: Jeff Fisher Date: Tue, 1 Aug 2023 16:37:31 +0000 Subject: [PATCH] Fix empty file share marker --- sdk/storage/storage-file-share/src/Clients.ts | 16 ++++++++++------ .../storage-file-share/src/ShareServiceClient.ts | 3 ++- .../storage-file-share/src/utils/utils.common.ts | 11 +++++++++++ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/sdk/storage/storage-file-share/src/Clients.ts b/sdk/storage/storage-file-share/src/Clients.ts index 403d8efbe7c5..e7a9d421dbf3 100644 --- a/sdk/storage/storage-file-share/src/Clients.ts +++ b/sdk/storage/storage-file-share/src/Clients.ts @@ -122,6 +122,7 @@ import { ConvertInternalResponseOfListHandles, WithResponse, assertResponse, + removeEmptyString, } from "./utils/utils.common"; import { Credential } from "../../storage-blob/src/credentials/Credential"; import { StorageSharedKeyCredential } from "../../storage-blob/src/credentials/StorageSharedKeyCredential"; @@ -2278,10 +2279,13 @@ export class ShareDirectoryClient extends StorageClient { * Return an AsyncIterableIterator that works a page at a time */ byPage: (settings: PageSettings = {}) => { - return this.iterateFilesAndDirectoriesSegments(settings.continuationToken, { - maxResults: settings.maxPageSize, - ...updatedOptions, - }); + return this.iterateFilesAndDirectoriesSegments( + removeEmptyString(settings.continuationToken), + { + maxResults: settings.maxPageSize, + ...updatedOptions, + } + ); }, }; } @@ -2470,7 +2474,7 @@ export class ShareDirectoryClient extends StorageClient { * Return an AsyncIterableIterator that works a page at a time */ byPage: (settings: PageSettings = {}) => { - return this.iterateHandleSegments(settings.continuationToken, { + return this.iterateHandleSegments(removeEmptyString(settings.continuationToken), { maxResults: settings.maxPageSize, ...options, }); @@ -4883,7 +4887,7 @@ export class ShareFileClient extends StorageClient { * Return an AsyncIterableIterator that works a page at a time */ byPage: (settings: PageSettings = {}) => { - return this.iterateHandleSegments(settings.continuationToken, { + return this.iterateHandleSegments(removeEmptyString(settings.continuationToken), { maxPageSize: settings.maxPageSize, ...options, }); diff --git a/sdk/storage/storage-file-share/src/ShareServiceClient.ts b/sdk/storage/storage-file-share/src/ShareServiceClient.ts index f6e4fbe83cff..16bb4af0d414 100644 --- a/sdk/storage/storage-file-share/src/ShareServiceClient.ts +++ b/sdk/storage/storage-file-share/src/ShareServiceClient.ts @@ -25,6 +25,7 @@ import { appendToURLPath, extractConnectionStringParts, assertResponse, + removeEmptyString, } from "./utils/utils.common"; import { Credential } from "../../storage-blob/src/credentials/Credential"; import { StorageSharedKeyCredential } from "../../storage-blob/src/credentials/StorageSharedKeyCredential"; @@ -604,7 +605,7 @@ export class ShareServiceClient extends StorageClient { * Return an AsyncIterableIterator that works a page at a time */ byPage: (settings: PageSettings = {}) => { - return this.listSegments(settings.continuationToken, { + return this.listSegments(removeEmptyString(settings.continuationToken), { maxResults: settings.maxPageSize, ...updatedOptions, }); diff --git a/sdk/storage/storage-file-share/src/utils/utils.common.ts b/sdk/storage/storage-file-share/src/utils/utils.common.ts index 9661e6b9534a..d72641cc55e3 100644 --- a/sdk/storage/storage-file-share/src/utils/utils.common.ts +++ b/sdk/storage/storage-file-share/src/utils/utils.common.ts @@ -754,3 +754,14 @@ export function ConvertInternalResponseOfListHandles( return wrappedResponse; } + +/** + * A small helper to handle converting an empty string "" into undefined + * This is used in the case of query parameters (like continuation token) where + * we don't want to send an empty query parameter to the service since the signing + * policy for shared key will fail. + * @internal + */ +export function removeEmptyString(value: string | undefined): string | undefined { + return value ? value : undefined; +}