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);
        }
Пример #3
0
        // 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);
        }