< Summary

Class:Azure.Storage.Blobs.BlobClientOptions
Assembly:Azure.Storage.Blobs
File(s):C:\Git\azure-sdk-for-net\sdk\storage\Azure.Storage.Blobs\src\BlobClientOptions.cs
Covered lines:121
Uncovered lines:2
Coverable lines:123
Total lines:246
Line coverage:98.3% (121 of 123)
Covered branches:2
Total branches:4
Branch coverage:50% (2 of 4)

Metrics

MethodCyclomatic complexity Line coverage Branch coverage
get_Version()-100%100%
get_CustomerProvidedKey()-100%100%
get_EncryptionScope()-0%100%
get_GeoRedundantSecondaryUri()-100%100%
.ctor(...)-87.5%50%
AddHeadersAndQueryParameters()-100%100%
Build(...)-100%100%
Build(...)-100%100%

File(s)

C:\Git\azure-sdk-for-net\sdk\storage\Azure.Storage.Blobs\src\BlobClientOptions.cs

#LineLine coverage
 1// Copyright (c) Microsoft Corporation. All rights reserved.
 2// Licensed under the MIT License.
 3
 4using System;
 5using Azure.Core;
 6using Azure.Core.Pipeline;
 7using Azure.Storage.Blobs.Models;
 8
 9namespace Azure.Storage.Blobs
 10{
 11    /// <summary>
 12    /// Provides the client configuration options for connecting to Azure Blob
 13    /// Storage.
 14    /// </summary>
 15    public class BlobClientOptions : ClientOptions
 16    {
 17        /// <summary>
 18        /// The Latest service version supported by this client library.
 19        /// </summary>
 20        internal const ServiceVersion LatestVersion = StorageVersionExtensions.LatestVersion;
 21
 22        /// <summary>
 23        /// The versions of Azure Blob Storage supported by this client
 24        /// library.  For more, see
 25        /// <see href="https://docs.microsoft.com/en-us/rest/api/storageservices/versioning-for-the-azure-storage-servic
 26        /// Versioning for Azure Storage Services</see>.
 27        /// </summary>
 28        public enum ServiceVersion
 29        {
 30#pragma warning disable CA1707 // Identifiers should not contain underscores
 31            /// <summary>
 32            /// The 2019-02-02 service version described at
 33            /// <see href="https://docs.microsoft.com/en-us/rest/api/storageservices/version-2019-02-02">
 34            /// Version 2019-02-02</see>
 35            /// </summary>
 36            V2019_02_02 = 1,
 37
 38            /// <summary>
 39            /// The 2019-07-07 service version described at
 40            /// <see href="https://docs.microsoft.com/en-us/rest/api/storageservices/version-2019-07-07">
 41            /// Version 2019-07-07</see>
 42            /// </summary>
 43            V2019_07_07 = 2,
 44
 45            /// <summary>
 46            /// The 2019-12-12 service version.
 47            /// </summary>
 48            V2019_12_12 = 3
 49#pragma warning restore CA1707 // Identifiers should not contain underscores
 50        }
 51
 52        /// <summary>
 53        /// Gets the <see cref="ServiceVersion"/> of the service API used when
 54        /// making requests.  For more, see
 55        /// <see href="https://docs.microsoft.com/en-us/rest/api/storageservices/versioning-for-the-azure-storage-servic
 56        /// Versioning for Azure Storage Services</see>.
 57        /// </summary>
 1521858        public ServiceVersion Version { get; }
 59
 60        /// <summary>
 61        /// Gets the <see cref="CustomerProvidedKey"/> to be used when making requests.
 62        /// </summary>
 460063        public CustomerProvidedKey? CustomerProvidedKey { get; set; }
 64
 65        /// <summary>
 66        /// Gets the <see cref="EncryptionScope"/> to be used when making requests.
 67        /// </summary>
 068        public string EncryptionScope { get; set; }
 69
 70        /// <summary>
 71        /// Gets or sets the secondary storage <see cref="Uri"/> that can be read from for the storage account if the
 72        /// account is enabled for RA-GRS.
 73        ///
 74        /// If this property is set, the secondary Uri will be used for GET or HEAD requests during retries.
 75        /// If the status of the response from the secondary Uri is a 404, then subsequent retries for
 76        /// the request will not use the secondary Uri again, as this indicates that the resource
 77        /// may not have propagated there yet. Otherwise, subsequent retries will alternate back and forth
 78        /// between primary and secondary Uri.
 79        /// </summary>
 462880        public Uri GeoRedundantSecondaryUri { get; set; }
 81
 82        #region Advanced Options
 83        internal ClientSideEncryptionOptions _clientSideEncryptionOptions;
 84        #endregion
 85
 86        /// <summary>
 87        /// Initializes a new instance of the <see cref="BlobClientOptions"/>
 88        /// class.
 89        /// </summary>
 90        /// <param name="version">
 91        /// The <see cref="ServiceVersion"/> of the service API used when
 92        /// making requests.
 93        /// </param>
 1533494        public BlobClientOptions(ServiceVersion version = LatestVersion)
 95        {
 1533496            if (ServiceVersion.V2019_02_02 <= version
 1533497                && version <= LatestVersion)
 98            {
 1533499                Version = version;
 100            }
 101            else
 102            {
 0103                throw Errors.VersionNotSupported(nameof(version));
 104            }
 105
 15334106            this.Initialize();
 15334107            AddHeadersAndQueryParameters();
 15334108        }
 109
 110        /// <summary>
 111        /// Add headers and query parameters in <see cref="DiagnosticsOptions.LoggedHeaderNames"/> and <see cref="Diagno
 112        /// </summary>
 113        private void AddHeadersAndQueryParameters()
 114        {
 15334115            Diagnostics.LoggedHeaderNames.Add("Access-Control-Allow-Origin");
 15334116            Diagnostics.LoggedHeaderNames.Add("x-ms-date");
 15334117            Diagnostics.LoggedHeaderNames.Add("x-ms-error-code");
 15334118            Diagnostics.LoggedHeaderNames.Add("x-ms-request-id");
 15334119            Diagnostics.LoggedHeaderNames.Add("x-ms-version");
 15334120            Diagnostics.LoggedHeaderNames.Add("Accept-Ranges");
 15334121            Diagnostics.LoggedHeaderNames.Add("Content-Disposition");
 15334122            Diagnostics.LoggedHeaderNames.Add("Content-Encoding");
 15334123            Diagnostics.LoggedHeaderNames.Add("Content-Language");
 15334124            Diagnostics.LoggedHeaderNames.Add("Content-MD5");
 15334125            Diagnostics.LoggedHeaderNames.Add("Content-Range");
 15334126            Diagnostics.LoggedHeaderNames.Add("Vary");
 15334127            Diagnostics.LoggedHeaderNames.Add("x-ms-content-crc64");
 15334128            Diagnostics.LoggedHeaderNames.Add("x-ms-copy-action");
 15334129            Diagnostics.LoggedHeaderNames.Add("x-ms-copy-completion-time");
 15334130            Diagnostics.LoggedHeaderNames.Add("x-ms-copy-id");
 15334131            Diagnostics.LoggedHeaderNames.Add("x-ms-copy-progress");
 15334132            Diagnostics.LoggedHeaderNames.Add("x-ms-copy-status");
 15334133            Diagnostics.LoggedHeaderNames.Add("x-ms-has-immutability-policy");
 15334134            Diagnostics.LoggedHeaderNames.Add("x-ms-has-legal-hold");
 15334135            Diagnostics.LoggedHeaderNames.Add("x-ms-lease-state");
 15334136            Diagnostics.LoggedHeaderNames.Add("x-ms-lease-status");
 15334137            Diagnostics.LoggedHeaderNames.Add("x-ms-range");
 15334138            Diagnostics.LoggedHeaderNames.Add("x-ms-request-server-encrypted");
 15334139            Diagnostics.LoggedHeaderNames.Add("x-ms-server-encrypted");
 15334140            Diagnostics.LoggedHeaderNames.Add("x-ms-snapshot");
 15334141            Diagnostics.LoggedHeaderNames.Add("x-ms-source-range");
 15334142            Diagnostics.LoggedHeaderNames.Add("x-ms-access-tier");
 15334143            Diagnostics.LoggedHeaderNames.Add("x-ms-access-tier-change-time");
 15334144            Diagnostics.LoggedHeaderNames.Add("x-ms-access-tier-inferred");
 15334145            Diagnostics.LoggedHeaderNames.Add("x-ms-account-kind");
 15334146            Diagnostics.LoggedHeaderNames.Add("x-ms-archive-status");
 15334147            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-append-offset");
 15334148            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-cache-control");
 15334149            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-committed-block-count");
 15334150            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-condition-appendpos");
 15334151            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-condition-maxsize");
 15334152            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-content-disposition");
 15334153            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-content-encoding");
 15334154            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-content-language");
 15334155            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-content-length");
 15334156            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-content-md5");
 15334157            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-content-type");
 15334158            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-public-access");
 15334159            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-sequence-number");
 15334160            Diagnostics.LoggedHeaderNames.Add("x-ms-blob-type");
 15334161            Diagnostics.LoggedHeaderNames.Add("x-ms-copy-destination-snapshot");
 15334162            Diagnostics.LoggedHeaderNames.Add("x-ms-creation-time");
 15334163            Diagnostics.LoggedHeaderNames.Add("x-ms-default-encryption-scope");
 15334164            Diagnostics.LoggedHeaderNames.Add("x-ms-delete-snapshots");
 15334165            Diagnostics.LoggedHeaderNames.Add("x-ms-delete-type-permanent");
 15334166            Diagnostics.LoggedHeaderNames.Add("x-ms-deny-encryption-scope-override");
 15334167            Diagnostics.LoggedHeaderNames.Add("x-ms-encryption-algorithm");
 15334168            Diagnostics.LoggedHeaderNames.Add("x-ms-if-sequence-number-eq");
 15334169            Diagnostics.LoggedHeaderNames.Add("x-ms-if-sequence-number-le");
 15334170            Diagnostics.LoggedHeaderNames.Add("x-ms-if-sequence-number-lt");
 15334171            Diagnostics.LoggedHeaderNames.Add("x-ms-incremental-copy");
 15334172            Diagnostics.LoggedHeaderNames.Add("x-ms-lease-action");
 15334173            Diagnostics.LoggedHeaderNames.Add("x-ms-lease-break-period");
 15334174            Diagnostics.LoggedHeaderNames.Add("x-ms-lease-duration");
 15334175            Diagnostics.LoggedHeaderNames.Add("x-ms-lease-id");
 15334176            Diagnostics.LoggedHeaderNames.Add("x-ms-lease-time");
 15334177            Diagnostics.LoggedHeaderNames.Add("x-ms-page-write");
 15334178            Diagnostics.LoggedHeaderNames.Add("x-ms-proposed-lease-id");
 15334179            Diagnostics.LoggedHeaderNames.Add("x-ms-range-get-content-md5");
 15334180            Diagnostics.LoggedHeaderNames.Add("x-ms-rehydrate-priority");
 15334181            Diagnostics.LoggedHeaderNames.Add("x-ms-sequence-number-action");
 15334182            Diagnostics.LoggedHeaderNames.Add("x-ms-sku-name");
 15334183            Diagnostics.LoggedHeaderNames.Add("x-ms-source-content-md5");
 15334184            Diagnostics.LoggedHeaderNames.Add("x-ms-source-if-match");
 15334185            Diagnostics.LoggedHeaderNames.Add("x-ms-source-if-modified-since");
 15334186            Diagnostics.LoggedHeaderNames.Add("x-ms-source-if-none-match");
 15334187            Diagnostics.LoggedHeaderNames.Add("x-ms-source-if-unmodified-since");
 15334188            Diagnostics.LoggedHeaderNames.Add("x-ms-tag-count");
 15334189            Diagnostics.LoggedHeaderNames.Add("x-ms-encryption-key-sha256");
 190
 15334191            Diagnostics.LoggedQueryParameters.Add("comp");
 15334192            Diagnostics.LoggedQueryParameters.Add("maxresults");
 15334193            Diagnostics.LoggedQueryParameters.Add("rscc");
 15334194            Diagnostics.LoggedQueryParameters.Add("rscd");
 15334195            Diagnostics.LoggedQueryParameters.Add("rsce");
 15334196            Diagnostics.LoggedQueryParameters.Add("rscl");
 15334197            Diagnostics.LoggedQueryParameters.Add("rsct");
 15334198            Diagnostics.LoggedQueryParameters.Add("se");
 15334199            Diagnostics.LoggedQueryParameters.Add("si");
 15334200            Diagnostics.LoggedQueryParameters.Add("sip");
 15334201            Diagnostics.LoggedQueryParameters.Add("sp");
 15334202            Diagnostics.LoggedQueryParameters.Add("spr");
 15334203            Diagnostics.LoggedQueryParameters.Add("sr");
 15334204            Diagnostics.LoggedQueryParameters.Add("srt");
 15334205            Diagnostics.LoggedQueryParameters.Add("ss");
 15334206            Diagnostics.LoggedQueryParameters.Add("st");
 15334207            Diagnostics.LoggedQueryParameters.Add("sv");
 15334208            Diagnostics.LoggedQueryParameters.Add("include");
 15334209            Diagnostics.LoggedQueryParameters.Add("marker");
 15334210            Diagnostics.LoggedQueryParameters.Add("prefix");
 15334211            Diagnostics.LoggedQueryParameters.Add("copyid");
 15334212            Diagnostics.LoggedQueryParameters.Add("restype");
 15334213            Diagnostics.LoggedQueryParameters.Add("blockid");
 15334214            Diagnostics.LoggedQueryParameters.Add("blocklisttype");
 15334215            Diagnostics.LoggedQueryParameters.Add("delimiter");
 15334216            Diagnostics.LoggedQueryParameters.Add("prevsnapshot");
 15334217            Diagnostics.LoggedQueryParameters.Add("ske");
 15334218            Diagnostics.LoggedQueryParameters.Add("skoid");
 15334219            Diagnostics.LoggedQueryParameters.Add("sks");
 15334220            Diagnostics.LoggedQueryParameters.Add("skt");
 15334221            Diagnostics.LoggedQueryParameters.Add("sktid");
 15334222            Diagnostics.LoggedQueryParameters.Add("skv");
 15334223            Diagnostics.LoggedQueryParameters.Add("snapshot");
 15334224        }
 225
 226        /// <summary>
 227        /// Create an HttpPipeline from BlobClientOptions.
 228        /// </summary>
 229        /// <param name="authentication">Optional authentication policy.</param>
 230        /// <returns>An HttpPipeline to use for Storage requests.</returns>
 231        internal HttpPipeline Build(HttpPipelinePolicy authentication = null)
 232        {
 4592233            return this.Build(authentication, GeoRedundantSecondaryUri);
 234        }
 235
 236        /// <summary>
 237        /// Create an HttpPipeline from BlobClientOptions.
 238        /// </summary>
 239        /// <param name="credentials">Optional authentication credentials.</param>
 240        /// <returns>An HttpPipeline to use for Storage requests.</returns>
 241        internal HttpPipeline Build(object credentials)
 242        {
 148243            return this.Build(credentials, GeoRedundantSecondaryUri);
 244        }
 245    }
 246}