public override TransactionalBatch CreateItemStream( Stream streamPayload, TransactionalBatchItemRequestOptions requestOptions = null) { if (requestOptions is EncryptionTransactionalBatchItemRequestOptions encryptionItemRequestOptions && encryptionItemRequestOptions.EncryptionOptions != null) { CosmosDiagnosticsContext diagnosticsContext = CosmosDiagnosticsContext.Create(requestOptions); using (diagnosticsContext.CreateScope("EncryptItemStream")) { streamPayload = EncryptionProcessor.EncryptAsync( streamPayload, this.encryptor, encryptionItemRequestOptions.EncryptionOptions, diagnosticsContext, cancellationToken: default).Result; } } this.transactionalBatch = this.transactionalBatch.CreateItemStream( streamPayload, requestOptions); return(this); }
public async override Task <ResponseMessage> ReplaceItemStreamAsync( Stream streamPayload, string id, PartitionKey partitionKey, ItemRequestOptions requestOptions = null, CancellationToken cancellationToken = default) { if (id == null) { throw new ArgumentNullException(nameof(id)); } if (streamPayload == null) { throw new ArgumentNullException(nameof(streamPayload)); } CosmosDiagnosticsContext diagnosticsContext = CosmosDiagnosticsContext.Create(requestOptions); using (diagnosticsContext.CreateScope("ReplaceItemStream")) { if (requestOptions is EncryptionItemRequestOptions encryptionItemRequestOptions) { if (partitionKey == null) { throw new NotSupportedException($"{nameof(partitionKey)} cannot be null for operations using {nameof(EncryptionContainer)}."); } streamPayload = await EncryptionProcessor.EncryptAsync( streamPayload, this.encryptor, encryptionItemRequestOptions.EncryptionOptions, diagnosticsContext, cancellationToken); ResponseMessage responseMessage = await this.container.ReplaceItemStreamAsync(streamPayload, id, partitionKey, requestOptions, cancellationToken); responseMessage.Content = await this.DecryptResponseAsync( responseMessage.Content, encryptionItemRequestOptions.DecryptionResultHandler, diagnosticsContext, cancellationToken); return(responseMessage); } else { return(await this.container.ReplaceItemStreamAsync(streamPayload, id, partitionKey, requestOptions, cancellationToken)); } } }
private async Task <ResponseMessage> ReplaceItemHelperAsync( Stream streamPayload, string id, PartitionKey partitionKey, ItemRequestOptions requestOptions, bool decryptResponse, CosmosDiagnosticsContext diagnosticsContext, CancellationToken cancellationToken) { if (!(requestOptions is EncryptionItemRequestOptions encryptionItemRequestOptions) || encryptionItemRequestOptions.EncryptionOptions == null) { return(await this.container.ReplaceItemStreamAsync( streamPayload, id, partitionKey, requestOptions, cancellationToken)); } if (partitionKey == null) { throw new NotSupportedException($"{nameof(partitionKey)} cannot be null for operations using {nameof(EncryptionContainer)}."); } streamPayload = await EncryptionProcessor.EncryptAsync( streamPayload, this.Encryptor, encryptionItemRequestOptions.EncryptionOptions, diagnosticsContext, cancellationToken); ResponseMessage responseMessage = await this.container.ReplaceItemStreamAsync( streamPayload, id, partitionKey, requestOptions, cancellationToken); if (decryptResponse) { (responseMessage.Content, _) = await EncryptionProcessor.DecryptAsync( responseMessage.Content, this.Encryptor, diagnosticsContext, cancellationToken); } return(responseMessage); }
public override async Task <ResponseMessage> CreateItemStreamAsync( Stream streamPayload, PartitionKey partitionKey, ItemRequestOptions requestOptions = null, CancellationToken cancellationToken = default) { if (streamPayload == null) { throw new ArgumentNullException(nameof(streamPayload)); } CosmosDiagnosticsContext diagnosticsContext = CosmosDiagnosticsContext.Create(requestOptions); using (diagnosticsContext.CreateScope("CreateItemStream")) { if (requestOptions is EncryptionItemRequestOptions encryptionItemRequestOptions) { streamPayload = await EncryptionProcessor.EncryptAsync( streamPayload, this.encryptor, encryptionItemRequestOptions.EncryptionOptions, diagnosticsContext, cancellationToken); ResponseMessage responseMessage = await this.container.CreateItemStreamAsync( streamPayload, partitionKey, requestOptions, cancellationToken); responseMessage.Content = await this.DecryptResponseAsync( responseMessage.Content, encryptionItemRequestOptions.DecryptionResultHandler, diagnosticsContext, cancellationToken); return(responseMessage); } else { return(await this.container.CreateItemStreamAsync( streamPayload, partitionKey, requestOptions, cancellationToken)); } } }
private async Task <ResponseMessage> CreateItemHelperAsync( Stream streamPayload, PartitionKey partitionKey, ItemRequestOptions requestOptions, bool decryptResponse, CosmosDiagnosticsContext diagnosticsContext, CancellationToken cancellationToken) { if (!(requestOptions is EncryptionItemRequestOptions encryptionItemRequestOptions) || encryptionItemRequestOptions.EncryptionOptions == null) { return(await this.container.CreateItemStreamAsync( streamPayload, partitionKey, requestOptions, cancellationToken)); } streamPayload = await EncryptionProcessor.EncryptAsync( streamPayload, this.Encryptor, encryptionItemRequestOptions.EncryptionOptions, diagnosticsContext, cancellationToken); ResponseMessage responseMessage = await this.container.CreateItemStreamAsync( streamPayload, partitionKey, requestOptions, cancellationToken); if (decryptResponse) { (responseMessage.Content, _) = await EncryptionProcessor.DecryptAsync( responseMessage.Content, this.Encryptor, diagnosticsContext, cancellationToken); } return(responseMessage); }