public async Task <IValueProvider> BindAsync(object value, ValueBindingContext context) { TTriggerValue val = value as TTriggerValue; if (val == null) { if (_directInvoker != null && (value is string str)) { // Direct invoke case. Need to converrt String-->TTriggerValue. val = await _directInvoker(new DirectInvokeString(str), _attribute, context); } else { // How is this possible? throw new NotImplementedException(); } } TUserType result = await _converter(val, _attribute, context); DirectInvokeString invokeString = await _getInvokeString(val, _attribute, context); IValueProvider vp = new ConstantValueProvider(result, typeof(TUserType), invokeString.Value); return(vp); }
// For describing InvokeStrings. private async Task <BlobBaseClient> ConvertFromInvokeString(DirectInvokeString input, Attribute attr, ValueBindingContext context) { var attrResolved = (BlobTriggerAttribute)attr; var client = _blobServiceClientProvider.Get(attrResolved.Connection); BlobPath path = BlobPath.ParseAndValidate(input.Value); var container = client.GetBlobContainerClient(path.ContainerName); var blob = await container.GetBlobReferenceFromServerAsync(path.BlobName).ConfigureAwait(false); return(blob.Client); }
// For describing InvokeStrings. private async Task <ICloudBlob> ConvertFromInvokeString(DirectInvokeString input, Attribute attr, ValueBindingContext context) { var attrResolved = (BlobTriggerAttribute)attr; var account = _accountProvider.Get(attrResolved.Connection); var client = account.CreateCloudBlobClient(); BlobPath path = BlobPath.ParseAndValidate(input.Value); var container = client.GetContainerReference(path.ContainerName); var blob = await container.GetBlobReferenceFromServerAsync(path.BlobName); return(blob); }
// For describing InvokeStrings. private async Task <IStorageBlob> ConvertFromInvokeString(DirectInvokeString input, Attribute attr, ValueBindingContext context) { var attrResolved = (BlobTriggerAttribute)attr; var account = await _accountProvider.GetStorageAccountAsync(attrResolved, CancellationToken.None); var client = account.CreateBlobClient(); var cancellationToken = context.CancellationToken; BlobPath path = BlobPath.ParseAndValidate(input.Value); IStorageBlobContainer container = client.GetContainerReference(path.ContainerName); var blob = await container.GetBlobReferenceFromServerAsync(path.BlobName, cancellationToken); return(blob); }