From 17f2722dee23b60c57aca11edb157bbaea925681 Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Fri, 26 Jul 2019 15:35:25 -0700 Subject: [PATCH 1/2] [storage-queue] update union type to credential: SharedKeyCredential | AnonymousCredential | TokenCredential --- .../storage-queue/src/MessageIdClient.ts | 19 ++++++++++++++----- .../storage-queue/src/MessagesClient.ts | 19 ++++++++++++++----- sdk/storage/storage-queue/src/Pipeline.ts | 7 ++++--- sdk/storage/storage-queue/src/QueueClient.ts | 19 ++++++++++++++----- .../storage-queue/src/QueueServiceClient.ts | 14 +++++++++----- 5 files changed, 55 insertions(+), 23 deletions(-) diff --git a/sdk/storage/storage-queue/src/MessageIdClient.ts b/sdk/storage/storage-queue/src/MessageIdClient.ts index 3b3a298dd285..002ac1ab1dbf 100644 --- a/sdk/storage/storage-queue/src/MessageIdClient.ts +++ b/sdk/storage/storage-queue/src/MessageIdClient.ts @@ -6,7 +6,6 @@ import * as Models from "./generated/lib/models"; import { Aborter } from "./Aborter"; import { MessageId } from "./generated/lib/operations"; import { newPipeline, NewPipelineOptions, Pipeline } from "./Pipeline"; -import { Credential } from "./credentials/Credential"; import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; import { AnonymousCredential } from "./credentials/AnonymousCredential"; import { StorageClient } from "./StorageClient"; @@ -88,13 +87,17 @@ export class MessageIdClient extends StorageClient { * "https://myaccount.queue.core.windows.net/myqueue/messages/messageid". You can * append a SAS if using AnonymousCredential, such as * "https://myaccount.queue.core.windows.net/myqueue/messages/messageid?sasString". - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, * or a TokenCredential from @azure/identity. If not specified, * AnonymousCredential is used. * @param {NewPipelineOptions} [options] Options to configure the HTTP pipeline. * @memberof MessageIdClient */ - constructor(url: string, credential?: Credential | TokenCredential, options?: NewPipelineOptions); + constructor( + url: string, + credential?: SharedKeyCredential | AnonymousCredential | TokenCredential, + options?: NewPipelineOptions + ); /** * Creates an instance of MessageIdClient. * @@ -109,7 +112,12 @@ export class MessageIdClient extends StorageClient { constructor(url: string, pipeline: Pipeline); constructor( urlOrConnectionString: string, - credentialOrPipelineOrQueueName?: Credential | TokenCredential | Pipeline | string, + credentialOrPipelineOrQueueName?: + | SharedKeyCredential + | AnonymousCredential + | TokenCredential + | Pipeline + | string, messageIdOrOptions?: string | NewPipelineOptions, options: NewPipelineOptions = {} ) { @@ -117,7 +125,8 @@ export class MessageIdClient extends StorageClient { if (credentialOrPipelineOrQueueName instanceof Pipeline) { pipeline = credentialOrPipelineOrQueueName; } else if ( - credentialOrPipelineOrQueueName instanceof Credential || + credentialOrPipelineOrQueueName instanceof SharedKeyCredential || + credentialOrPipelineOrQueueName instanceof AnonymousCredential || isTokenCredential(credentialOrPipelineOrQueueName) ) { options = messageIdOrOptions as NewPipelineOptions; diff --git a/sdk/storage/storage-queue/src/MessagesClient.ts b/sdk/storage/storage-queue/src/MessagesClient.ts index 0f8253149e0c..5745ed9c0c77 100644 --- a/sdk/storage/storage-queue/src/MessagesClient.ts +++ b/sdk/storage/storage-queue/src/MessagesClient.ts @@ -10,7 +10,6 @@ import { StorageClient } from "./StorageClient"; import { appendToURLPath, extractConnectionStringParts } from "./utils/utils.common"; import { MessageIdClient } from "./MessageIdClient"; import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; -import { Credential } from "./credentials/Credential"; import { AnonymousCredential } from "./credentials/AnonymousCredential"; /** @@ -182,13 +181,17 @@ export class MessagesClient extends StorageClient { * "https://myaccount.queue.core.windows.net/myqueue/messages". You can * append a SAS if using AnonymousCredential, such as * "https://myaccount.queue.core.windows.net/myqueue/messages?sasString". - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, * or a TokenCredential from @azure/identity. If not specified, * AnonymousCredential is used. * @param {NewPipelineOptions} [options] Options to configure the HTTP pipeline. * @memberof MessagesClient */ - constructor(url: string, credential?: Credential | TokenCredential, options?: NewPipelineOptions); + constructor( + url: string, + credential?: SharedKeyCredential | AnonymousCredential | TokenCredential, + options?: NewPipelineOptions + ); /** * Creates an instance of MessagesClient. * @@ -203,14 +206,20 @@ export class MessagesClient extends StorageClient { constructor(url: string, pipeline: Pipeline); constructor( urlOrConnectionString: string, - credentialOrPipelineOrQueueName?: Credential | TokenCredential | Pipeline | string, + credentialOrPipelineOrQueueName?: + | SharedKeyCredential + | AnonymousCredential + | TokenCredential + | Pipeline + | string, options?: NewPipelineOptions ) { let pipeline: Pipeline; if (credentialOrPipelineOrQueueName instanceof Pipeline) { pipeline = credentialOrPipelineOrQueueName; } else if ( - credentialOrPipelineOrQueueName instanceof Credential || + credentialOrPipelineOrQueueName instanceof SharedKeyCredential || + credentialOrPipelineOrQueueName instanceof AnonymousCredential || isTokenCredential(credentialOrPipelineOrQueueName) ) { pipeline = newPipeline(credentialOrPipelineOrQueueName, options); diff --git a/sdk/storage/storage-queue/src/Pipeline.ts b/sdk/storage/storage-queue/src/Pipeline.ts index 703da982aa73..cb7f76686a12 100644 --- a/sdk/storage/storage-queue/src/Pipeline.ts +++ b/sdk/storage/storage-queue/src/Pipeline.ts @@ -23,11 +23,12 @@ import { bearerTokenAuthenticationPolicy } from "@azure/core-http"; import { BrowserPolicyFactory } from "./BrowserPolicyFactory"; -import { Credential } from "./credentials/Credential"; import { LoggingPolicyFactory } from "./LoggingPolicyFactory"; import { RetryOptions, RetryPolicyFactory } from "./RetryPolicyFactory"; import { TelemetryOptions, TelemetryPolicyFactory } from "./TelemetryPolicyFactory"; import { UniqueRequestIDPolicyFactory } from "./UniqueRequestIDPolicyFactory"; +import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; +import { AnonymousCredential } from "./credentials/AnonymousCredential"; // Export following interfaces and types for customers who want to implement their // own RequestPolicy or HTTPClient @@ -187,7 +188,7 @@ export interface NewPipelineOptions { * Creates a new Pipeline object with Credential provided. * * @static - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, * or a TokenCredential from @azure/identity. If not specified, * AnonymousCredential is used. * @param {NewPipelineOptions} [pipelineOptions] Options. @@ -195,7 +196,7 @@ export interface NewPipelineOptions { * @memberof Pipeline */ export function newPipeline( - credential: Credential | TokenCredential, + credential: SharedKeyCredential | AnonymousCredential | TokenCredential, pipelineOptions: NewPipelineOptions = {} ): Pipeline { // Order is important. Closer to the API at the top & closer to the network at the bottom. diff --git a/sdk/storage/storage-queue/src/QueueClient.ts b/sdk/storage/storage-queue/src/QueueClient.ts index 246c1ad38c85..0b67869553a9 100644 --- a/sdk/storage/storage-queue/src/QueueClient.ts +++ b/sdk/storage/storage-queue/src/QueueClient.ts @@ -14,7 +14,6 @@ import { extractConnectionStringParts } from "./utils/utils.common"; import { MessagesClient } from "./MessagesClient"; -import { Credential } from "./credentials/Credential"; import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; import { AnonymousCredential } from "./credentials/AnonymousCredential"; @@ -221,13 +220,17 @@ export class QueueClient extends StorageClient { * "https://myaccount.queue.core.windows.net/myqueue". You can * append a SAS if using AnonymousCredential, such as * "https://myaccount.queue.core.windows.net/myqueue?sasString". - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, * or a TokenCredential from @azure/identity. If not specified, * AnonymousCredential is used. * @param {NewPipelineOptions} [options] Options to configure the HTTP pipeline. * @memberof QueueClient */ - constructor(url: string, credential?: Credential | TokenCredential, options?: NewPipelineOptions); + constructor( + url: string, + credential?: SharedKeyCredential | AnonymousCredential | TokenCredential, + options?: NewPipelineOptions + ); /** * Creates an instance of QueueClient. * @@ -242,14 +245,20 @@ export class QueueClient extends StorageClient { constructor(url: string, pipeline: Pipeline); constructor( urlOrConnectionString: string, - credentialOrPipelineOrQueueName?: Credential | TokenCredential | Pipeline | string, + credentialOrPipelineOrQueueName?: + | SharedKeyCredential + | AnonymousCredential + | TokenCredential + | Pipeline + | string, options?: NewPipelineOptions ) { let pipeline: Pipeline; if (credentialOrPipelineOrQueueName instanceof Pipeline) { pipeline = credentialOrPipelineOrQueueName; } else if ( - credentialOrPipelineOrQueueName instanceof Credential || + credentialOrPipelineOrQueueName instanceof SharedKeyCredential || + credentialOrPipelineOrQueueName instanceof AnonymousCredential || isTokenCredential(credentialOrPipelineOrQueueName) ) { pipeline = newPipeline(credentialOrPipelineOrQueueName, options); diff --git a/sdk/storage/storage-queue/src/QueueServiceClient.ts b/sdk/storage/storage-queue/src/QueueServiceClient.ts index 938d786d6a3a..c8857753e0be 100644 --- a/sdk/storage/storage-queue/src/QueueServiceClient.ts +++ b/sdk/storage/storage-queue/src/QueueServiceClient.ts @@ -12,7 +12,6 @@ import { QueueClient } from "./QueueClient"; import "@azure/core-paging"; import { PageSettings, PagedAsyncIterableIterator } from "@azure/core-paging"; import { appendToURLPath, extractConnectionStringParts } from "./utils/utils.common"; -import { Credential } from "./credentials/Credential"; import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; import { AnonymousCredential } from "./credentials/AnonymousCredential"; @@ -188,13 +187,17 @@ export class QueueServiceClient extends StorageClient { * @param {string} url A URL string pointing to Azure Storage queue service, such as * "https://myaccount.queue.core.windows.net". You can append a SAS * if using AnonymousCredential, such as "https://myaccount.queue.core.windows.net?sasString". - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, * or a TokenCredential from @azure/identity. If not specified, * AnonymousCredential is used. * @param {NewPipelineOptions} [options] Options to configure the HTTP pipeline. * @memberof QueueServiceClient */ - constructor(url: string, credential?: Credential | TokenCredential, options?: NewPipelineOptions); + constructor( + url: string, + credential?: SharedKeyCredential | AnonymousCredential | TokenCredential, + options?: NewPipelineOptions + ); /** * Creates an instance of QueueServiceClient. * @@ -208,14 +211,15 @@ export class QueueServiceClient extends StorageClient { constructor(url: string, pipeline: Pipeline); constructor( url: string, - credentialOrPipeline?: Credential | TokenCredential | Pipeline, + credentialOrPipeline?: SharedKeyCredential | AnonymousCredential | TokenCredential | Pipeline, options?: NewPipelineOptions ) { let pipeline: Pipeline; if (credentialOrPipeline instanceof Pipeline) { pipeline = credentialOrPipeline; } else if ( - credentialOrPipeline instanceof Credential || + credentialOrPipeline instanceof SharedKeyCredential || + credentialOrPipeline instanceof AnonymousCredential || isTokenCredential(credentialOrPipeline) ) { pipeline = newPipeline(credentialOrPipeline, options); From fb5423a6ed9cb6ddc0e970c3f35ac3bc49323cfe Mon Sep 17 00:00:00 2001 From: HarshaNalluru <10452642+HarshaNalluru@users.noreply.github.com> Date: Fri, 26 Jul 2019 15:44:51 -0700 Subject: [PATCH 2/2] [storage-blob] credential union type --- .../storage-blob/src/AppendBlobClient.ts | 19 ++++++++++++++----- sdk/storage/storage-blob/src/BlobClient.ts | 19 ++++++++++++++----- .../storage-blob/src/BlobServiceClient.ts | 14 +++++++++----- .../storage-blob/src/BlockBlobClient.ts | 19 ++++++++++++++----- .../storage-blob/src/ContainerClient.ts | 19 ++++++++++++++----- .../storage-blob/src/PageBlobClient.ts | 19 ++++++++++++++----- sdk/storage/storage-blob/src/Pipeline.ts | 7 ++++--- 7 files changed, 83 insertions(+), 33 deletions(-) diff --git a/sdk/storage/storage-blob/src/AppendBlobClient.ts b/sdk/storage/storage-blob/src/AppendBlobClient.ts index d84ebaaf541c..891b285a8ffc 100644 --- a/sdk/storage/storage-blob/src/AppendBlobClient.ts +++ b/sdk/storage/storage-blob/src/AppendBlobClient.ts @@ -18,7 +18,6 @@ import { newPipeline, NewPipelineOptions, Pipeline } from "./Pipeline"; import { URLConstants } from "./utils/constants"; import { setURLParameter, extractConnectionStringParts } from "./utils/utils.common"; import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; -import { Credential } from "./credentials/Credential"; import { AnonymousCredential } from "./credentials/AnonymousCredential"; /** @@ -149,13 +148,17 @@ export class AppendBlobClient extends BlobClient { * Encoded URL string will NOT be escaped twice, only special characters in URL path will be escaped. * However, if a blob name includes ? or %, blob name must be encoded in the URL. * Such as a blob named "my?blob%", the URL should be "https://myaccount.blob.core.windows.net/mycontainer/my%3Fblob%25". - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, * or a TokenCredential from @azure/identity. If not specified, * AnonymousCredential is used. * @param {NewPipelineOptions} [options] Optional. Options to configure the HTTP pipeline. * @memberof AppendBlobClient */ - constructor(url: string, credential: Credential | TokenCredential, options?: NewPipelineOptions); + constructor( + url: string, + credential: SharedKeyCredential | AnonymousCredential | TokenCredential, + options?: NewPipelineOptions + ); /** * Creates an instance of AppendBlobClient. * This method accepts an encoded URL or non-encoded URL pointing to an append blob. @@ -177,7 +180,12 @@ export class AppendBlobClient extends BlobClient { constructor(url: string, pipeline: Pipeline); constructor( urlOrConnectionString: string, - credentialOrPipelineOrContainerName: string | Credential | TokenCredential | Pipeline, + credentialOrPipelineOrContainerName: + | string + | SharedKeyCredential + | AnonymousCredential + | TokenCredential + | Pipeline, blobNameOrOptions?: string | NewPipelineOptions, options?: NewPipelineOptions ) { @@ -187,7 +195,8 @@ export class AppendBlobClient extends BlobClient { if (credentialOrPipelineOrContainerName instanceof Pipeline) { pipeline = credentialOrPipelineOrContainerName; } else if ( - credentialOrPipelineOrContainerName instanceof Credential || + credentialOrPipelineOrContainerName instanceof SharedKeyCredential || + credentialOrPipelineOrContainerName instanceof AnonymousCredential || isTokenCredential(credentialOrPipelineOrContainerName) ) { options = blobNameOrOptions as NewPipelineOptions; diff --git a/sdk/storage/storage-blob/src/BlobClient.ts b/sdk/storage/storage-blob/src/BlobClient.ts index 543dbcedf9b7..3425a6e14507 100644 --- a/sdk/storage/storage-blob/src/BlobClient.ts +++ b/sdk/storage/storage-blob/src/BlobClient.ts @@ -28,7 +28,6 @@ import { import { AppendBlobClient, StorageClient } from "./internal"; import { BlockBlobClient } from "./internal"; import { PageBlobClient } from "./internal"; -import { Credential } from "./credentials/Credential"; import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; import { AnonymousCredential } from "./credentials/AnonymousCredential"; import { Batch } from "./utils/Batch"; @@ -584,13 +583,17 @@ export class BlobClient extends StorageClient { * @param {string} url A Client string pointing to Azure Storage blob service, such as * "https://myaccount.blob.core.windows.net". You can append a SAS * if using AnonymousCredential, such as "https://myaccount.blob.core.windows.net?sasString". - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, * or a TokenCredential from @azure/identity. If not specified, * AnonymousCredential is used. * @param {NewPipelineOptions} [options] Optional. Options to configure the HTTP pipeline. * @memberof BlobClient */ - constructor(url: string, credential?: Credential | TokenCredential, options?: NewPipelineOptions); + constructor( + url: string, + credential?: SharedKeyCredential | AnonymousCredential | TokenCredential, + options?: NewPipelineOptions + ); /** * Creates an instance of BlobClient. * This method accepts an encoded URL or non-encoded URL pointing to a blob. @@ -612,7 +615,12 @@ export class BlobClient extends StorageClient { constructor(url: string, pipeline: Pipeline); constructor( urlOrConnectionString: string, - credentialOrPipelineOrContainerName?: string | Credential | TokenCredential | Pipeline, + credentialOrPipelineOrContainerName?: + | string + | SharedKeyCredential + | AnonymousCredential + | TokenCredential + | Pipeline, blobNameOrOptions?: string | NewPipelineOptions, options?: NewPipelineOptions ) { @@ -620,7 +628,8 @@ export class BlobClient extends StorageClient { if (credentialOrPipelineOrContainerName instanceof Pipeline) { pipeline = credentialOrPipelineOrContainerName; } else if ( - credentialOrPipelineOrContainerName instanceof Credential || + credentialOrPipelineOrContainerName instanceof SharedKeyCredential || + credentialOrPipelineOrContainerName instanceof AnonymousCredential || isTokenCredential(credentialOrPipelineOrContainerName) ) { options = blobNameOrOptions as NewPipelineOptions; diff --git a/sdk/storage/storage-blob/src/BlobServiceClient.ts b/sdk/storage/storage-blob/src/BlobServiceClient.ts index 3fe32e8029b1..61734650e727 100644 --- a/sdk/storage/storage-blob/src/BlobServiceClient.ts +++ b/sdk/storage/storage-blob/src/BlobServiceClient.ts @@ -13,7 +13,6 @@ import { ContainerDeleteMethodOptions } from "./ContainerClient"; import { appendToURLPath, extractConnectionStringParts } from "./utils/utils.common"; -import { Credential } from "./credentials/Credential"; import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; import { AnonymousCredential } from "./credentials/AnonymousCredential"; import { StorageClient } from "./internal"; @@ -201,13 +200,17 @@ export class BlobServiceClient extends StorageClient { * @param {string} url A Client string pointing to Azure Storage blob service, such as * "https://myaccount.blob.core.windows.net". You can append a SAS * if using AnonymousCredential, such as "https://myaccount.blob.core.windows.net?sasString". - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, * or a TokenCredential from @azure/identity. If not specified, * AnonymousCredential is used. * @param {NewPipelineOptions} [options] Optional. Options to configure the HTTP pipeline. * @memberof BlobServiceClient */ - constructor(url: string, credential?: Credential | TokenCredential, options?: NewPipelineOptions); + constructor( + url: string, + credential?: SharedKeyCredential | AnonymousCredential | TokenCredential, + options?: NewPipelineOptions + ); /** * Creates an instance of BlobServiceClient. * @@ -221,14 +224,15 @@ export class BlobServiceClient extends StorageClient { constructor(url: string, pipeline: Pipeline); constructor( url: string, - credentialOrPipeline?: Credential | TokenCredential | Pipeline, + credentialOrPipeline?: SharedKeyCredential | AnonymousCredential | TokenCredential | Pipeline, options?: NewPipelineOptions ) { let pipeline: Pipeline; if (credentialOrPipeline instanceof Pipeline) { pipeline = credentialOrPipeline; } else if ( - credentialOrPipeline instanceof Credential || + credentialOrPipeline instanceof SharedKeyCredential || + credentialOrPipeline instanceof AnonymousCredential || isTokenCredential(credentialOrPipeline) ) { pipeline = newPipeline(credentialOrPipeline, options); diff --git a/sdk/storage/storage-blob/src/BlockBlobClient.ts b/sdk/storage/storage-blob/src/BlockBlobClient.ts index 3d6ca91703b6..d91e73e5b840 100644 --- a/sdk/storage/storage-blob/src/BlockBlobClient.ts +++ b/sdk/storage/storage-blob/src/BlockBlobClient.ts @@ -27,7 +27,6 @@ import { generateBlockID } from "./utils/utils.common"; import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; -import { Credential } from "./credentials/Credential"; import { AnonymousCredential } from "./credentials/AnonymousCredential"; import { URLConstants, @@ -427,11 +426,15 @@ export class BlockBlobClient extends BlobClient { * Encoded URL string will NOT be escaped twice, only special characters in URL path will be escaped. * However, if a blob name includes ? or %, blob name must be encoded in the URL. * Such as a blob named "my?blob%", the URL should be "https://myaccount.blob.core.windows.net/mycontainer/my%3Fblob%25". - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential or TokenCredential. + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential or TokenCredential. * @param {NewPipelineOptions} [options] Optional. Options to configure the HTTP pipeline. * @memberof BlockBlobClient */ - constructor(url: string, credential?: Credential | TokenCredential, options?: NewPipelineOptions); + constructor( + url: string, + credential?: SharedKeyCredential | AnonymousCredential | TokenCredential, + options?: NewPipelineOptions + ); /** * Creates an instance of BlockBlobClient. * This method accepts an encoded URL or non-encoded URL pointing to a block blob. @@ -453,7 +456,12 @@ export class BlockBlobClient extends BlobClient { constructor(url: string, pipeline: Pipeline); constructor( urlOrConnectionString: string, - credentialOrPipelineOrContainerName?: string | Credential | TokenCredential | Pipeline, + credentialOrPipelineOrContainerName?: + | string + | SharedKeyCredential + | AnonymousCredential + | TokenCredential + | Pipeline, blobNameOrOptions?: string | NewPipelineOptions, options?: NewPipelineOptions ) { @@ -463,7 +471,8 @@ export class BlockBlobClient extends BlobClient { if (credentialOrPipelineOrContainerName instanceof Pipeline) { pipeline = credentialOrPipelineOrContainerName; } else if ( - credentialOrPipelineOrContainerName instanceof Credential || + credentialOrPipelineOrContainerName instanceof SharedKeyCredential || + credentialOrPipelineOrContainerName instanceof AnonymousCredential || isTokenCredential(credentialOrPipelineOrContainerName) ) { options = blobNameOrOptions as NewPipelineOptions; diff --git a/sdk/storage/storage-blob/src/ContainerClient.ts b/sdk/storage/storage-blob/src/ContainerClient.ts index e79c124a5ba3..4655b909091f 100644 --- a/sdk/storage/storage-blob/src/ContainerClient.ts +++ b/sdk/storage/storage-blob/src/ContainerClient.ts @@ -28,7 +28,6 @@ import { BlockBlobUploadOptions, BlobDeleteOptions } from "./internal"; -import { Credential } from "./credentials/Credential"; import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; import { AnonymousCredential } from "./credentials/AnonymousCredential"; import { LeaseClient } from "./LeaseClient"; @@ -481,13 +480,17 @@ export class ContainerClient extends StorageClient { * Encoded URL string will NOT be escaped twice, only special characters in URL path will be escaped. * However, if a blob name includes ? or %, blob name must be encoded in the URL. * Such as a blob named "my?blob%", the URL should be "https://myaccount.blob.core.windows.net/mycontainer/my%3Fblob%25". - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, * or a TokenCredential from @azure/identity. If not specified, * AnonymousCredential is used. * @param {NewPipelineOptions} [options] Optional. Options to configure the HTTP pipeline. * @memberof ContainerClient */ - constructor(url: string, credential?: Credential | TokenCredential, options?: NewPipelineOptions); + constructor( + url: string, + credential?: SharedKeyCredential | AnonymousCredential | TokenCredential, + options?: NewPipelineOptions + ); /** * Creates an instance of PageBlobClient. * This method accepts an encoded URL or non-encoded URL pointing to a page blob. @@ -510,14 +513,20 @@ export class ContainerClient extends StorageClient { constructor(url: string, pipeline: Pipeline); constructor( urlOrConnectionString: string, - credentialOrPipelineOrContainerName?: string | Credential | TokenCredential | Pipeline, + credentialOrPipelineOrContainerName?: + | string + | SharedKeyCredential + | AnonymousCredential + | TokenCredential + | Pipeline, options?: NewPipelineOptions ) { let pipeline: Pipeline; if (credentialOrPipelineOrContainerName instanceof Pipeline) { pipeline = credentialOrPipelineOrContainerName; } else if ( - credentialOrPipelineOrContainerName instanceof Credential || + credentialOrPipelineOrContainerName instanceof SharedKeyCredential || + credentialOrPipelineOrContainerName instanceof AnonymousCredential || isTokenCredential(credentialOrPipelineOrContainerName) ) { pipeline = newPipeline(credentialOrPipelineOrContainerName, options); diff --git a/sdk/storage/storage-blob/src/PageBlobClient.ts b/sdk/storage/storage-blob/src/PageBlobClient.ts index eaf0abdb7ccc..004f6143b3f1 100644 --- a/sdk/storage/storage-blob/src/PageBlobClient.ts +++ b/sdk/storage/storage-blob/src/PageBlobClient.ts @@ -19,7 +19,6 @@ import { newPipeline, NewPipelineOptions, Pipeline } from "./Pipeline"; import { URLConstants } from "./utils/constants"; import { setURLParameter, extractConnectionStringParts } from "./utils/utils.common"; import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; -import { Credential } from "./credentials/Credential"; import { AnonymousCredential } from "./credentials/AnonymousCredential"; /** @@ -309,12 +308,16 @@ export class PageBlobClient extends BlobClient { * @param {string} url A Client string pointing to Azure Storage blob service, such as * "https://myaccount.blob.core.windows.net". You can append a SAS * if using AnonymousCredential, such as "https://myaccount.blob.core.windows.net?sasString". - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, * or a TokenCredential from @azure/identity. * @param {NewPipelineOptions} [options] Optional. Options to configure the HTTP pipeline. * @memberof PageBlobClient */ - constructor(url: string, credential: Credential | TokenCredential, options?: NewPipelineOptions); + constructor( + url: string, + credential: SharedKeyCredential | AnonymousCredential | TokenCredential, + options?: NewPipelineOptions + ); /** * Creates an instance of PageBlobClient. * @@ -333,7 +336,12 @@ export class PageBlobClient extends BlobClient { constructor(url: string, pipeline: Pipeline); constructor( urlOrConnectionString: string, - credentialOrPipelineOrContainerName: string | Credential | TokenCredential | Pipeline, + credentialOrPipelineOrContainerName: + | string + | SharedKeyCredential + | AnonymousCredential + | TokenCredential + | Pipeline, blobNameOrOptions?: string | NewPipelineOptions, options?: NewPipelineOptions ) { @@ -343,7 +351,8 @@ export class PageBlobClient extends BlobClient { if (credentialOrPipelineOrContainerName instanceof Pipeline) { pipeline = credentialOrPipelineOrContainerName; } else if ( - credentialOrPipelineOrContainerName instanceof Credential || + credentialOrPipelineOrContainerName instanceof SharedKeyCredential || + credentialOrPipelineOrContainerName instanceof AnonymousCredential || isTokenCredential(credentialOrPipelineOrContainerName) ) { options = blobNameOrOptions as NewPipelineOptions; diff --git a/sdk/storage/storage-blob/src/Pipeline.ts b/sdk/storage/storage-blob/src/Pipeline.ts index b8828a56cf36..8de1cfdfdae7 100644 --- a/sdk/storage/storage-blob/src/Pipeline.ts +++ b/sdk/storage/storage-blob/src/Pipeline.ts @@ -24,11 +24,12 @@ import { } from "@azure/core-http"; import { BrowserPolicyFactory } from "./BrowserPolicyFactory"; -import { Credential } from "./credentials/Credential"; import { LoggingPolicyFactory } from "./LoggingPolicyFactory"; import { RetryOptions, RetryPolicyFactory } from "./RetryPolicyFactory"; import { TelemetryOptions, TelemetryPolicyFactory } from "./TelemetryPolicyFactory"; import { UniqueRequestIDPolicyFactory } from "./UniqueRequestIDPolicyFactory"; +import { SharedKeyCredential } from "./credentials/SharedKeyCredential"; +import { AnonymousCredential } from "./credentials/AnonymousCredential"; // Export following interfaces and types for customers who want to implement their // own RequestPolicy or HTTPClient @@ -188,13 +189,13 @@ export interface NewPipelineOptions { * Creates a new Pipeline object with Credential provided. * * @export - * @param {Credential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, + * @param {SharedKeyCredential | AnonymousCredential | TokenCredential} credential Such as AnonymousCredential, SharedKeyCredential, RawTokenCredential, * or a TokenCredential from @azure/identity. * @param {NewPipelineOptions} [pipelineOptions] Optional. Options. * @returns {Pipeline} A new Pipeline object. */ export function newPipeline( - credential: Credential | TokenCredential, + credential: SharedKeyCredential | AnonymousCredential | TokenCredential, pipelineOptions: NewPipelineOptions = {} ): Pipeline { // Order is important. Closer to the API at the top & closer to the network at the bottom.