public Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context) { ParameterInfo parameter = context.Parameter; var queueTrigger = TypeUtility.GetResolvedAttribute <QueueTriggerAttribute>(context.Parameter); if (queueTrigger == null) { return(Task.FromResult <ITriggerBinding>(null)); } string queueName = Resolve(queueTrigger.QueueName); queueName = NormalizeAndValidate(queueName); ITriggerDataArgumentBinding <QueueMessage> argumentBinding = InnerProvider.TryCreate(parameter); if (argumentBinding == null) { throw new InvalidOperationException( "Can't bind QueueTrigger to type '" + parameter.ParameterType + "'."); } QueueServiceClient client = _queueServiceClientProvider.Get(queueTrigger.Connection, _nameResolver); var queue = client.GetQueueClient(queueName); ITriggerBinding binding = new QueueTriggerBinding(parameter.Name, client, queue, argumentBinding, _queueOptions, _exceptionHandler, _messageEnqueuedWatcherSetter, _loggerFactory, _queueProcessorFactory); return(Task.FromResult(binding)); }
public Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context) { ParameterInfo parameter = context.Parameter; var blobTriggerAttribute = TypeUtility.GetResolvedAttribute <BlobTriggerAttribute>(context.Parameter); if (parameter.ParameterType == typeof(PageBlobClient) && blobTriggerAttribute.Source == BlobTriggerSource.EventGrid) { _logger.LogError($"PageBlobClient is not supported with {nameof(BlobTriggerSource.EventGrid)}"); return(Task.FromResult <ITriggerBinding>(null)); } if (blobTriggerAttribute == null) { return(Task.FromResult <ITriggerBinding>(null)); } string resolvedCombinedPath = Resolve(blobTriggerAttribute.BlobPath); IBlobPathSource path = BlobPathSource.Create(resolvedCombinedPath); var hostBlobServiceClient = _blobServiceClientProvider.GetHost(); var dataBlobServiceClient = _blobServiceClientProvider.Get(blobTriggerAttribute.Connection, _nameResolver); var hostQueueServiceClient = _queueServiceClientProvider.GetHost(); var dataQueueServiceClient = _queueServiceClientProvider.Get(blobTriggerAttribute.Connection, _nameResolver); // premium does not support blob logs, so disallow for blob triggers // $$$ // dataAccount.AssertTypeOneOf(StorageAccountType.GeneralPurpose, StorageAccountType.BlobOnly); ITriggerBinding binding = new BlobTriggerBinding(parameter, hostBlobServiceClient, hostQueueServiceClient, dataBlobServiceClient, dataQueueServiceClient, path, blobTriggerAttribute.Source, _hostIdProvider, _blobsOptions, _exceptionHandler, _blobWrittenWatcherSetter, _blobTriggerQueueWriterFactory, _sharedContextProvider, _singletonManager, _loggerFactory); return(Task.FromResult(binding)); }
internal QueueClient GetQueue(QueueAttribute attrResolved) { var client = _queueServiceClientProvider.Get(attrResolved.Connection); string queueName = attrResolved.QueueName.ToLowerInvariant(); QueueClientExtensions.ValidateQueueName(queueName); return(client.GetQueueClient(queueName)); }