public ServiceBusBinding(ScriptHostConfiguration config, ServiceBusBindingMetadata metadata, FileAccess access) : base(config, metadata, access) { string queueOrTopicName = metadata.QueueName ?? metadata.TopicName; if (string.IsNullOrEmpty(queueOrTopicName)) { throw new ArgumentException("A valid queue or topic name must be specified."); } QueueOrTopicName = queueOrTopicName; _queueOrTopicNameBindingTemplate = BindingTemplate.FromString(QueueOrTopicName); }
protected ParameterDescriptor ParseServiceBusTrigger(ServiceBusBindingMetadata trigger, Type triggerParameterType) { if (trigger == null) { throw new ArgumentNullException("trigger"); } if (triggerParameterType == null) { throw new ArgumentNullException("triggerParameterType"); } string queueName = trigger.QueueName; string topicName = trigger.TopicName; string subscriptionName = trigger.SubscriptionName; AccessRights accessRights = trigger.AccessRights; CustomAttributeBuilder attributeBuilder = null; if (!string.IsNullOrEmpty(topicName) && !string.IsNullOrEmpty(subscriptionName)) { ConstructorInfo ctorInfo = typeof(ServiceBusTriggerAttribute).GetConstructor(new Type[] { typeof(string), typeof(string), typeof(AccessRights) }); attributeBuilder = new CustomAttributeBuilder(ctorInfo, new object[] { topicName, subscriptionName, accessRights }); } else if (!string.IsNullOrEmpty(queueName)) { ConstructorInfo ctorInfo = typeof(ServiceBusTriggerAttribute).GetConstructor(new Type[] { typeof(string), typeof(AccessRights) }); attributeBuilder = new CustomAttributeBuilder(ctorInfo, new object[] { queueName, accessRights }); } else { throw new InvalidOperationException("Invalid ServiceBus trigger configuration."); } var attributes = new Collection <CustomAttributeBuilder> { attributeBuilder }; if (!string.IsNullOrEmpty(trigger.Connection)) { ServiceBusBinding.AddServiceBusAccountAttribute(attributes, trigger.Connection); } return(new ParameterDescriptor(trigger.Name, triggerParameterType, attributes)); }
public void GenerateServiceBusTriggerFunction() { ServiceBusBindingMetadata trigger = new ServiceBusBindingMetadata { Type = BindingType.ServiceBusTrigger, TopicName = "testTopic", SubscriptionName = "testSubscription", AccessRights = AccessRights.Listen }; 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); ServiceBusTriggerAttribute attribute = parameter.GetCustomAttribute<ServiceBusTriggerAttribute>(); Assert.Equal(null, attribute.QueueName); Assert.Equal("testTopic", attribute.TopicName); Assert.Equal("testSubscription", attribute.SubscriptionName); Assert.Equal(AccessRights.Listen, attribute.Access); }
protected ParameterDescriptor ParseServiceBusTrigger(ServiceBusBindingMetadata trigger, Type triggerParameterType = null) { if (triggerParameterType == null) { triggerParameterType = typeof(string); } string queueName = trigger.QueueName; string topicName = trigger.TopicName; string subscriptionName = trigger.SubscriptionName; AccessRights accessRights = trigger.AccessRights; CustomAttributeBuilder attributeBuilder = null; if (!string.IsNullOrEmpty(topicName) && !string.IsNullOrEmpty(subscriptionName)) { ConstructorInfo ctorInfo = typeof(ServiceBusTriggerAttribute).GetConstructor(new Type[] { typeof(string), typeof(string), typeof(AccessRights) }); attributeBuilder = new CustomAttributeBuilder(ctorInfo, new object[] { topicName, subscriptionName, accessRights }); } else if (!string.IsNullOrEmpty(queueName)) { ConstructorInfo ctorInfo = typeof(ServiceBusTriggerAttribute).GetConstructor(new Type[] { typeof(string), typeof(AccessRights) }); attributeBuilder = new CustomAttributeBuilder(ctorInfo, new object[] { queueName, accessRights }); } else { throw new InvalidOperationException("Invalid ServiceBus trigger configuration."); } string parameterName = trigger.Name; var attributes = new Collection<CustomAttributeBuilder> { attributeBuilder }; return new ParameterDescriptor(parameterName, triggerParameterType, attributes); }