Class EncryptedBlobClient

java.lang.Object
com.azure.storage.blob.specialized.BlobClientBase
com.azure.storage.blob.BlobClient
com.azure.storage.blob.specialized.cryptography.EncryptedBlobClient

public class EncryptedBlobClient extends BlobClient
This class provides a client side encryption client that contains generic blob operations for Azure Storage Blobs. Operations allowed by the client are uploading, downloading and copying a blob, retrieving and setting metadata, retrieving and setting HTTP headers, and deleting and un-deleting a blob. The upload and download operation allow for encryption and decryption of the data client side. Note: setting metadata in particular is unsafe and should only be done so with caution.

Please refer to the Azure Docs For Client-Side Encryption for more information.

This client is instantiated through EncryptedBlobClientBuilder

For operations on a specific blob type (i.e. append, block, or page) use getAppendBlobClient, getBlockBlobClient, or getPageBlobAsyncClient to construct a client that allows blob specific operations. Note, these types do not support client-side encryption, though decryption is possible in case the associated block/page/append blob contains encrypted data.

Please refer to the Azure Docs for more information.

  • Method Details

    • getEncryptionScopeClient

      public EncryptedBlobClient getEncryptionScopeClient(String encryptionScope)
      Creates a new EncryptedBlobClient with the specified encryptionScope.
      Overrides:
      getEncryptionScopeClient in class BlobClient
      Parameters:
      encryptionScope - the encryption scope for the blob, pass null to use no encryption scope.
      Returns:
      a EncryptedBlobClient with the specified encryptionScope.
    • getCustomerProvidedKeyClient

      public EncryptedBlobClient getCustomerProvidedKeyClient(CustomerProvidedKey customerProvidedKey)
      Creates a new EncryptedBlobClient with the specified customerProvidedKey.
      Overrides:
      getCustomerProvidedKeyClient in class BlobClient
      Parameters:
      customerProvidedKey - the CustomerProvidedKey for the blob, pass null to use no customer provided key.
      Returns:
      a EncryptedBlobClient with the specified customerProvidedKey.
    • getBlobOutputStream

      public BlobOutputStream getBlobOutputStream()
      Creates and opens an output stream to write data to the block blob.

      Note: We recommend you call write with reasonably sized buffers, you can do so by wrapping the BlobOutputStream obtained below with a BufferedOutputStream.

      Returns:
      A BlobOutputStream object used to write data to the blob.
      Throws:
      BlobStorageException - If a storage service error occurred.
    • getBlobOutputStream

      public BlobOutputStream getBlobOutputStream(boolean overwrite)
      Creates and opens an output stream to write data to the block blob.

      Note: We recommend you call write with reasonably sized buffers, you can do so by wrapping the BlobOutputStream obtained below with a BufferedOutputStream.

      Parameters:
      overwrite - Whether to overwrite, should data exist on the blob.
      Returns:
      A BlobOutputStream object used to write data to the blob.
      Throws:
      BlobStorageException - If a storage service error occurred.
    • getBlobOutputStream

      public BlobOutputStream getBlobOutputStream(ParallelTransferOptions parallelTransferOptions, BlobHttpHeaders headers, Map<String,String> metadata, AccessTier tier, BlobRequestConditions requestConditions)
      Creates and opens an output stream to write data to the block blob. If the blob already exists on the service, it will be overwritten.

      To avoid overwriting, pass "*" to BlobRequestConditions.setIfNoneMatch(String).

      Note: We recommend you call write with reasonably sized buffers, you can do so by wrapping the BlobOutputStream obtained below with a BufferedOutputStream.

      Parameters:
      parallelTransferOptions - ParallelTransferOptions used to configure buffered uploading.
      headers - BlobHttpHeaders
      metadata - Metadata to associate with the blob. If there is leading or trailing whitespace in any metadata key or value, it must be removed or encoded.
      tier - AccessTier for the destination blob.
      requestConditions - BlobRequestConditions
      Returns:
      A BlobOutputStream object used to write data to the blob.
      Throws:
      BlobStorageException - If a storage service error occurred.
    • getBlobOutputStream

      public BlobOutputStream getBlobOutputStream(BlockBlobOutputStreamOptions options)
      Creates and opens an output stream to write data to the block blob. If the blob already exists on the service, it will be overwritten.

      To avoid overwriting, pass "*" to BlobRequestConditions.setIfNoneMatch(String).

      Note: We recommend you call write with reasonably sized buffers, you can do so by wrapping the BlobOutputStream obtained below with a BufferedOutputStream.

      Parameters:
      options - BlockBlobOutputStreamOptions
      Returns:
      A BlobOutputStream object used to write data to the blob.
      Throws:
      BlobStorageException - If a storage service error occurred.
    • uploadFromFile

      public void uploadFromFile(String filePath)
      Creates a new block blob, or updates the content of an existing block blob.

      Code Samples

       try {
           client.uploadFromFile(filePath);
           System.out.println("Upload from file succeeded");
       } catch (UncheckedIOException ex) {
           System.err.printf("Failed to upload from file %s%n", ex.getMessage());
       }
       
      Overrides:
      uploadFromFile in class BlobClient
      Parameters:
      filePath - Path of the file to upload
    • uploadFromFile

      public void uploadFromFile(String filePath, boolean overwrite)
      Creates a new block blob, or updates the content of an existing block blob.

      Code Samples

       try {
           boolean overwrite = false; // Default value
           client.uploadFromFile(filePath, overwrite);
           System.out.println("Upload from file succeeded");
       } catch (UncheckedIOException ex) {
           System.err.printf("Failed to upload from file %s%n", ex.getMessage());
       }
       
      Overrides:
      uploadFromFile in class BlobClient
      Parameters:
      filePath - Path of the file to upload
      overwrite - Whether to overwrite should data already exist on the blob
    • uploadFromFile

      public void uploadFromFile(String filePath, ParallelTransferOptions parallelTransferOptions, BlobHttpHeaders headers, Map<String,String> metadata, AccessTier tier, BlobRequestConditions requestConditions, Duration timeout) throws UncheckedIOException
      Creates a new block blob, or updates the content of an existing block blob.

      Code Samples

       BlobHttpHeaders headers = new BlobHttpHeaders()
           .setContentMd5("data".getBytes(StandardCharsets.UTF_8))
           .setContentLanguage("en-US")
           .setContentType("binary");
      
       Map<String, String> metadata = new HashMap<>(Collections.singletonMap("metadata", "value"));
       BlobRequestConditions requestConditions = new BlobRequestConditions()
           .setLeaseId(leaseId)
           .setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3));
       long blockSize = 100 * 1024 * 1024; // 100 MB;
       ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions().setBlockSizeLong(blockSize);
      
       try {
           client.uploadFromFile(filePath, parallelTransferOptions, headers, metadata, AccessTier.HOT,
               requestConditions, timeout);
           System.out.println("Upload from file succeeded");
       } catch (UncheckedIOException ex) {
           System.err.printf("Failed to upload from file %s%n", ex.getMessage());
       }
       
      Overrides:
      uploadFromFile in class BlobClient
      Parameters:
      filePath - Path of the file to upload
      parallelTransferOptions - ParallelTransferOptions to use to upload from file. Number of parallel transfers parameter is ignored.
      headers - BlobHttpHeaders
      metadata - Metadata to associate with the blob. If there is leading or trailing whitespace in any metadata key or value, it must be removed or encoded.
      tier - AccessTier for the uploaded blob
      requestConditions - BlobRequestConditions
      timeout - An optional timeout value beyond which a RuntimeException will be raised.
      Throws:
      UncheckedIOException - If an I/O error occurs
    • uploadFromFileWithResponse

      public Response<BlockBlobItem> uploadFromFileWithResponse(BlobUploadFromFileOptions options, Duration timeout, Context context) throws UncheckedIOException
      Creates a new block blob, or updates the content of an existing block blob.

      Code Samples

       BlobHttpHeaders headers = new BlobHttpHeaders()
           .setContentMd5("data".getBytes(StandardCharsets.UTF_8))
           .setContentLanguage("en-US")
           .setContentType("binary");
      
       Map<String, String> metadata = new HashMap<>(Collections.singletonMap("metadata", "value"));
       Map<String, String> tags = new HashMap<>(Collections.singletonMap("tag", "value"));
       BlobRequestConditions requestConditions = new BlobRequestConditions()
           .setLeaseId(leaseId)
           .setIfUnmodifiedSince(OffsetDateTime.now().minusDays(3));
       long blockSize = 100 * 1024 * 1024; // 100 MB;
       ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions().setBlockSizeLong(blockSize);
      
       try {
           client.uploadFromFileWithResponse(new BlobUploadFromFileOptions(filePath)
               .setParallelTransferOptions(parallelTransferOptions).setHeaders(headers).setMetadata(metadata)
               .setTags(tags).setTier(AccessTier.HOT).setRequestConditions(requestConditions), timeout,
               Context.NONE);
           System.out.println("Upload from file succeeded");
       } catch (UncheckedIOException ex) {
           System.err.printf("Failed to upload from file %s%n", ex.getMessage());
       }
       
      Overrides:
      uploadFromFileWithResponse in class BlobClient
      Parameters:
      options - BlobUploadFromFileOptions
      timeout - An optional timeout value beyond which a RuntimeException will be raised.
      context - Additional context that is passed through the Http pipeline during the service call.
      Returns:
      Information about the uploaded block blob.
      Throws:
      UncheckedIOException - If an I/O error occurs
    • downloadToFile

      public BlobProperties downloadToFile(String filePath)
      Description copied from class: BlobClientBase
      Downloads the entire blob into a file specified by the path.

      The file will be created and must not exist, if the file already exists a FileAlreadyExistsException will be thrown.

      Code Samples

       client.downloadToFile(file);
       System.out.println("Completed download to file");
       

      For more information, see the Azure Docs

      Overrides:
      downloadToFile in class BlobClientBase
      Parameters:
      filePath - A String representing the filePath where the downloaded data will be written.
      Returns:
      The blob properties and metadata.
    • downloadToFile

      public BlobProperties downloadToFile(String filePath, boolean overwrite)
      Description copied from class: BlobClientBase
      Downloads the entire blob into a file specified by the path.

      If overwrite is set to false, the file will be created and must not exist, if the file already exists a FileAlreadyExistsException will be thrown.

      Code Samples

       boolean overwrite = false; // Default value
       client.downloadToFile(file, overwrite);
       System.out.println("Completed download to file");
       

      For more information, see the Azure Docs

      Overrides:
      downloadToFile in class BlobClientBase
      Parameters:
      filePath - A String representing the filePath where the downloaded data will be written.
      overwrite - Whether to overwrite the file, should the file exist.
      Returns:
      The blob properties and metadata.
    • downloadToFileWithResponse

      public Response<BlobProperties> downloadToFileWithResponse(String filePath, BlobRange range, ParallelTransferOptions parallelTransferOptions, DownloadRetryOptions downloadRetryOptions, BlobRequestConditions requestConditions, boolean rangeGetContentMd5, Duration timeout, Context context)
      Description copied from class: BlobClientBase
      Downloads the entire blob into a file specified by the path.

      The file will be created and must not exist, if the file already exists a FileAlreadyExistsException will be thrown.

      Code Samples

       BlobRange range = new BlobRange(1024, 2048L);
       DownloadRetryOptions options = new DownloadRetryOptions().setMaxRetryRequests(5);
      
       client.downloadToFileWithResponse(file, range, new ParallelTransferOptions().setBlockSizeLong(4L * Constants.MB),
           options, null, false, timeout, new Context(key2, value2));
       System.out.println("Completed download to file");
       

      For more information, see the Azure Docs

      Overrides:
      downloadToFileWithResponse in class BlobClientBase
      Parameters:
      filePath - A String representing the filePath where the downloaded data will be written.
      range - BlobRange
      parallelTransferOptions - ParallelTransferOptions to use to download to file. Number of parallel transfers parameter is ignored.
      downloadRetryOptions - DownloadRetryOptions
      requestConditions - BlobRequestConditions
      rangeGetContentMd5 - Whether the contentMD5 for the specified blob range should be returned.
      timeout - An optional timeout value beyond which a RuntimeException will be raised.
      context - Additional context that is passed through the Http pipeline during the service call.
      Returns:
      A response containing the blob properties and metadata.
    • downloadToFileWithResponse

      public Response<BlobProperties> downloadToFileWithResponse(String filePath, BlobRange range, ParallelTransferOptions parallelTransferOptions, DownloadRetryOptions downloadRetryOptions, BlobRequestConditions requestConditions, boolean rangeGetContentMd5, Set<OpenOption> openOptions, Duration timeout, Context context)
      Description copied from class: BlobClientBase
      Downloads the entire blob into a file specified by the path.

      By default the file will be created and must not exist, if the file already exists a FileAlreadyExistsException will be thrown. To override this behavior, provide appropriate OpenOptions

      Code Samples

       BlobRange blobRange = new BlobRange(1024, 2048L);
       DownloadRetryOptions downloadRetryOptions = new DownloadRetryOptions().setMaxRetryRequests(5);
       Set<OpenOption> openOptions = new HashSet<>(Arrays.asList(StandardOpenOption.CREATE_NEW,
           StandardOpenOption.WRITE, StandardOpenOption.READ)); // Default options
      
       client.downloadToFileWithResponse(file, blobRange, new ParallelTransferOptions().setBlockSizeLong(4L * Constants.MB),
           downloadRetryOptions, null, false, openOptions, timeout, new Context(key2, value2));
       System.out.println("Completed download to file");
       

      For more information, see the Azure Docs

      Overrides:
      downloadToFileWithResponse in class BlobClientBase
      Parameters:
      filePath - A String representing the filePath where the downloaded data will be written.
      range - BlobRange
      parallelTransferOptions - ParallelTransferOptions to use to download to file. Number of parallel transfers parameter is ignored.
      downloadRetryOptions - DownloadRetryOptions
      requestConditions - BlobRequestConditions
      rangeGetContentMd5 - Whether the contentMD5 for the specified blob range should be returned.
      openOptions - OpenOptions to use to configure how to open or create the file.
      timeout - An optional timeout value beyond which a RuntimeException will be raised.
      context - Additional context that is passed through the Http pipeline during the service call.
      Returns:
      A response containing the blob properties and metadata.
    • downloadToFileWithResponse

      public Response<BlobProperties> downloadToFileWithResponse(BlobDownloadToFileOptions options, Duration timeout, Context context)
      Description copied from class: BlobClientBase
      Downloads the entire blob into a file specified by the path.

      By default the file will be created and must not exist, if the file already exists a FileAlreadyExistsException will be thrown. To override this behavior, provide appropriate OpenOptions

      Code Samples

       client.downloadToFileWithResponse(new BlobDownloadToFileOptions(file)
           .setRange(new BlobRange(1024, 2018L))
           .setDownloadRetryOptions(new DownloadRetryOptions().setMaxRetryRequests(5))
           .setOpenOptions(new HashSet<>(Arrays.asList(StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE,
               StandardOpenOption.READ))), timeout, new Context(key2, value2));
       System.out.println("Completed download to file");
       

      For more information, see the Azure Docs

      Overrides:
      downloadToFileWithResponse in class BlobClientBase
      Parameters:
      options - BlobDownloadToFileOptions
      timeout - An optional timeout value beyond which a RuntimeException will be raised.
      context - Additional context that is passed through the Http pipeline during the service call.
      Returns:
      A response containing the blob properties and metadata.
    • openInputStream

      public BlobInputStream openInputStream()
      Description copied from class: BlobClientBase
      Opens a blob input stream to download the blob.
      Overrides:
      openInputStream in class BlobClientBase
      Returns:
      An InputStream object that represents the stream to use for reading from the blob.
    • openInputStream

      public BlobInputStream openInputStream(BlobRange range, BlobRequestConditions requestConditions)
      Description copied from class: BlobClientBase
      Opens a blob input stream to download the specified range of the blob.
      Overrides:
      openInputStream in class BlobClientBase
      Parameters:
      range - BlobRange
      requestConditions - An BlobRequestConditions object that represents the access conditions for the blob.
      Returns:
      An InputStream object that represents the stream to use for reading from the blob.
    • openInputStream

      public BlobInputStream openInputStream(BlobInputStreamOptions options)
      Description copied from class: BlobClientBase
      Opens a blob input stream to download the specified range of the blob.
      Overrides:
      openInputStream in class BlobClientBase
      Parameters:
      options - BlobInputStreamOptions
      Returns:
      An InputStream object that represents the stream to use for reading from the blob.
    • openInputStream

      public BlobInputStream openInputStream(BlobInputStreamOptions options, Context context)
      Description copied from class: BlobClientBase
      Opens a blob input stream to download the specified range of the blob.
      Overrides:
      openInputStream in class BlobClientBase
      Parameters:
      options - BlobInputStreamOptions
      context - Context
      Returns:
      An InputStream object that represents the stream to use for reading from the blob.
    • download

      @Deprecated public void download(OutputStream stream)
      Deprecated.
      Description copied from class: BlobClientBase
      Downloads the entire blob into an output stream. Uploading data must be done from the BlockBlobClient, PageBlobClient, or AppendBlobClient.

      Code Samples

       client.download(new ByteArrayOutputStream());
       System.out.println("Download completed.");
       

      For more information, see the Azure Docs

      This method will be deprecated in the future. Use BlobClientBase.downloadStream(OutputStream) instead.

      Overrides:
      download in class BlobClientBase
      Parameters:
      stream - A non-null OutputStream instance where the downloaded data will be written.
    • downloadStream

      public void downloadStream(OutputStream stream)
      Description copied from class: BlobClientBase
      Downloads the entire blob into an output stream. Uploading data must be done from the BlockBlobClient, PageBlobClient, or AppendBlobClient.

      Code Samples

       client.downloadStream(new ByteArrayOutputStream());
       System.out.println("Download completed.");
       

      For more information, see the Azure Docs

      Overrides:
      downloadStream in class BlobClientBase
      Parameters:
      stream - A non-null OutputStream instance where the downloaded data will be written.
    • downloadContent

      public BinaryData downloadContent()
      Description copied from class: BlobClientBase
      Downloads the entire blob. Uploading data must be done from the BlockBlobClient, PageBlobClient, or AppendBlobClient.

      Code Samples

       BinaryData data = client.downloadContent();
       System.out.printf("Downloaded %s", data.toString());
       

      For more information, see the Azure Docs

      This method supports downloads up to 2GB of data. Use BlobClientBase.downloadStream(OutputStream) to download larger blobs.

      Overrides:
      downloadContent in class BlobClientBase
      Returns:
      The content of the blob.
    • downloadWithResponse

      @Deprecated public BlobDownloadResponse downloadWithResponse(OutputStream stream, BlobRange range, DownloadRetryOptions options, BlobRequestConditions requestConditions, boolean getRangeContentMd5, Duration timeout, Context context)
      Deprecated.
      Description copied from class: BlobClientBase
      Downloads a range of bytes from a blob into an output stream. Uploading data must be done from the BlockBlobClient, PageBlobClient, or AppendBlobClient.

      Code Samples

       BlobRange range = new BlobRange(1024, 2048L);
       DownloadRetryOptions options = new DownloadRetryOptions().setMaxRetryRequests(5);
      
       System.out.printf("Download completed with status %d%n",
           client.downloadWithResponse(new ByteArrayOutputStream(), range, options, null, false,
               timeout, new Context(key2, value2)).getStatusCode());
       

      For more information, see the Azure Docs

      This method will be deprecated in the future. Use BlobClientBase.downloadStreamWithResponse(OutputStream, BlobRange, DownloadRetryOptions, BlobRequestConditions, boolean, Duration, Context) instead.

      Overrides:
      downloadWithResponse in class BlobClientBase
      Parameters:
      stream - A non-null OutputStream instance where the downloaded data will be written.
      range - BlobRange
      options - DownloadRetryOptions
      requestConditions - BlobRequestConditions
      getRangeContentMd5 - Whether the contentMD5 for the specified blob range should be returned.
      timeout - An optional timeout value beyond which a RuntimeException will be raised.
      context - Additional context that is passed through the Http pipeline during the service call.
      Returns:
      A response containing status code and HTTP headers.
    • downloadStreamWithResponse

      public BlobDownloadResponse downloadStreamWithResponse(OutputStream stream, BlobRange range, DownloadRetryOptions options, BlobRequestConditions requestConditions, boolean getRangeContentMd5, Duration timeout, Context context)
      Description copied from class: BlobClientBase
      Downloads a range of bytes from a blob into an output stream. Uploading data must be done from the BlockBlobClient, PageBlobClient, or AppendBlobClient.

      Code Samples

       BlobRange range = new BlobRange(1024, 2048L);
       DownloadRetryOptions options = new DownloadRetryOptions().setMaxRetryRequests(5);
      
       System.out.printf("Download completed with status %d%n",
           client.downloadStreamWithResponse(new ByteArrayOutputStream(), range, options, null, false,
               timeout, new Context(key2, value2)).getStatusCode());
       

      For more information, see the Azure Docs

      Overrides:
      downloadStreamWithResponse in class BlobClientBase
      Parameters:
      stream - A non-null OutputStream instance where the downloaded data will be written.
      range - BlobRange
      options - DownloadRetryOptions
      requestConditions - BlobRequestConditions
      getRangeContentMd5 - Whether the contentMD5 for the specified blob range should be returned.
      timeout - An optional timeout value beyond which a RuntimeException will be raised.
      context - Additional context that is passed through the Http pipeline during the service call.
      Returns:
      A response containing status code and HTTP headers.
    • downloadContentWithResponse

      public BlobDownloadContentResponse downloadContentWithResponse(DownloadRetryOptions options, BlobRequestConditions requestConditions, Duration timeout, Context context)
      Description copied from class: BlobClientBase
      Downloads a range of bytes from a blob into an output stream. Uploading data must be done from the BlockBlobClient, PageBlobClient, or AppendBlobClient.

      Code Samples

       DownloadRetryOptions options = new DownloadRetryOptions().setMaxRetryRequests(5);
      
       BlobDownloadContentResponse contentResponse = client.downloadContentWithResponse(options, null,
           timeout, new Context(key2, value2));
       BinaryData content = contentResponse.getValue();
       System.out.printf("Download completed with status %d and content%s%n",
           contentResponse.getStatusCode(), content.toString());
       

      For more information, see the Azure Docs

      This method supports downloads up to 2GB of data. Use BlobClientBase.downloadStreamWithResponse(OutputStream, BlobRange, DownloadRetryOptions, BlobRequestConditions, boolean, Duration, Context) to download larger blobs.

      Overrides:
      downloadContentWithResponse in class BlobClientBase
      Parameters:
      options - DownloadRetryOptions
      requestConditions - BlobRequestConditions
      timeout - An optional timeout value beyond which a RuntimeException will be raised.
      context - Additional context that is passed through the Http pipeline during the service call.
      Returns:
      A response containing status code and HTTP headers.
    • getAppendBlobClient

      public AppendBlobClient getAppendBlobClient()
      Unsupported.
      Overrides:
      getAppendBlobClient in class BlobClient
      Returns:
      A AppendBlobClient associated with this blob.
    • getBlockBlobClient

      public BlockBlobClient getBlockBlobClient()
      Unsupported.
      Overrides:
      getBlockBlobClient in class BlobClient
      Returns:
      A BlockBlobClient associated with this blob.
    • getPageBlobClient

      public PageBlobClient getPageBlobClient()
      Unsupported.
      Overrides:
      getPageBlobClient in class BlobClient
      Returns:
      A PageBlobClient associated with this blob.
    • openQueryInputStream

      public InputStream openQueryInputStream(String expression)
      Unsupported. Cannot query data encrypted on client side.
      Overrides:
      openQueryInputStream in class BlobClientBase
      Parameters:
      expression - The query expression.
      Returns:
      An InputStream object that represents the stream to use for reading the query response.
    • openQueryInputStreamWithResponse

      public Response<InputStream> openQueryInputStreamWithResponse(BlobQueryOptions queryOptions)
      Unsupported. Cannot query data encrypted on client side.
      Overrides:
      openQueryInputStreamWithResponse in class BlobClientBase
      Parameters:
      queryOptions - The query options.
      Returns:
      A response containing status code and HTTP headers including an InputStream object that represents the stream to use for reading the query response.
    • query

      public void query(OutputStream stream, String expression)
      Unsupported. Cannot query data encrypted on client side.
      Overrides:
      query in class BlobClientBase
      Parameters:
      stream - A non-null OutputStream instance where the downloaded data will be written.
      expression - The query expression.
    • queryWithResponse

      public BlobQueryResponse queryWithResponse(BlobQueryOptions queryOptions, Duration timeout, Context context)
      Unsupported. Cannot query data encrypted on client side.
      Overrides:
      queryWithResponse in class BlobClientBase
      Parameters:
      queryOptions - The query options.
      timeout - An optional timeout value beyond which a RuntimeException will be raised.
      context - Additional context that is passed through the Http pipeline during the service call.
      Returns:
      A response containing status code and HTTP headers.