public override Collection <Attribute> GetAttributes() { Collection <Attribute> attributes = new Collection <Attribute>(); string queueName = Context.GetMetadataValue <string>("queueName"); Attribute attribute = null; if (Context.IsTrigger) { attribute = new QueueTriggerAttribute(queueName); } else { attribute = new QueueAttribute(queueName); } attributes.Add(attribute); var connectionProvider = (IConnectionProvider)attribute; string connection = Context.GetMetadataValue <string>("connection"); if (!string.IsNullOrEmpty(connection)) { connectionProvider.Connection = connection; } return(attributes); }
public async Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context) { ParameterInfo parameter = context.Parameter; QueueTriggerAttribute queueTrigger = parameter.GetCustomAttribute <QueueTriggerAttribute>(inherit: false); if (queueTrigger == null) { return(null); } string queueName = Resolve(queueTrigger.QueueName); queueName = NormalizeAndValidate(queueName); ITriggerDataArgumentBinding <IStorageQueueMessage> argumentBinding = _innerProvider.TryCreate(parameter); if (argumentBinding == null) { throw new InvalidOperationException( "Can't bind QueueTrigger to type '" + parameter.ParameterType + "'."); } IStorageAccount account = await _accountProvider.GetStorageAccountAsync(context.CancellationToken); IStorageQueueClient client = account.CreateQueueClient(); IStorageQueue queue = client.GetQueueReference(queueName); ITriggerBinding binding = new QueueTriggerBinding(parameter.Name, queue, argumentBinding, _queueConfiguration, _backgroundExceptionDispatcher, _messageEnqueuedWatcherSetter, _sharedContextProvider, _log); return(binding); }
public void GenerateQueueTriggerFunction() { QueueBindingMetadata trigger = new QueueBindingMetadata { Type = BindingType.QueueTrigger, QueueName = "test" }; MethodInfo method = GenerateMethod(trigger); VerifyCommonProperties(method); // verify trigger parameter ParameterInfo parameter = method.GetParameters()[0]; Assert.Equal("input", parameter.Name); Assert.Equal(typeof(string), parameter.ParameterType); QueueTriggerAttribute attribute = parameter.GetCustomAttribute <QueueTriggerAttribute>(); Assert.Equal("test", attribute.QueueName); }
public async Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context) { ParameterInfo parameter = context.Parameter; QueueTriggerAttribute queueTrigger = parameter.GetCustomAttribute <QueueTriggerAttribute>(inherit: false); if (queueTrigger == null) { return(null); } string queueName = Resolve(queueTrigger.QueueName); queueName = NormalizeAndValidate(queueName); ITriggerDataArgumentBinding <IStorageQueueMessage> argumentBinding = InnerProvider.TryCreate(parameter); if (argumentBinding == null) { throw new InvalidOperationException( "Can't bind QueueTrigger to type '" + parameter.ParameterType + "'."); } IStorageAccount account = await _accountProvider.GetStorageAccountAsync(context.Parameter, context.CancellationToken, _nameResolver); // requires storage account with queue support account.AssertTypeOneOf(StorageAccountType.GeneralPurpose); StorageClientFactoryContext clientFactoryContext = new StorageClientFactoryContext { Parameter = parameter }; IStorageQueueClient client = account.CreateQueueClient(clientFactoryContext); IStorageQueue queue = client.GetQueueReference(queueName); ITriggerBinding binding = new QueueTriggerBinding(parameter.Name, queue, argumentBinding, _queueConfiguration, _exceptionHandler, _messageEnqueuedWatcherSetter, _sharedContextProvider, _trace); return(binding); }
public void GenerateQueueTriggerFunction() { BindingMetadata trigger = BindingMetadata.Create(new JObject { { "type", "QueueTrigger" }, { "name", "input" }, { "direction", "in" }, { "queueName", "test" } }); MethodInfo method = GenerateMethod(trigger); VerifyCommonProperties(method); // verify trigger parameter ParameterInfo parameter = method.GetParameters()[0]; Assert.Equal("input", parameter.Name); Assert.Equal(typeof(string), parameter.ParameterType); QueueTriggerAttribute attribute = parameter.GetCustomAttribute <QueueTriggerAttribute>(); Assert.Equal("test", attribute.QueueName); }