public void Configuration_Caches_NotificationHubClients() { // Arrange var config = new NotificationHubsConfiguration { ConnectionString = "Endpoint=sb://TestNS.servicebus.windows.net/;SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=2XgXnw2bVCd7GT9RPaZ/RandomKey", HubName = "TestHub" }; var attribute = new NotificationHubAttribute(); config.BindForNotificationHubClient(attribute); // Act config.BuildFromAttribute(attribute); // Assert Assert.Equal(1, config.ClientCache.Count); // Act attribute.HubName = "TestHub2"; config.BuildFromAttribute(attribute); // Assert Assert.Equal(2, config.ClientCache.Count); }
internal NotificationHubClient BindForNotificationHubClient(NotificationHubAttribute attribute) { string resolvedConnectionString = ResolveConnectionString(attribute.ConnectionStringSetting); string resolvedHubName = ResolveHubName(attribute.HubName); INotificationHubClientService service = GetService(resolvedConnectionString, resolvedHubName, attribute.EnableTestSend); return(service.GetNotificationHubClient()); }
private IAsyncCollector <Notification> BuildFromAttribute(NotificationHubAttribute attribute) { string resolvedConnectionString = ResolveConnectionString(ConnectionString, attribute.ConnectionString); string resolvedHubName = ResolveHubName(HubName, attribute.HubName); INotificationHubClientService service = new NotificationHubClientService(resolvedConnectionString, resolvedHubName); return(new NotificationHubAsyncCollector(service, attribute.TagExpression)); }
internal IAsyncCollector <Notification> BuildFromAttribute(NotificationHubAttribute attribute, TraceWriter trace) { string resolvedConnectionString = ResolveConnectionString(attribute.ConnectionStringSetting); string resolvedHubName = ResolveHubName(attribute.HubName); bool enableTestSend = attribute.EnableTestSend; INotificationHubClientService service = GetService(resolvedConnectionString, resolvedHubName, enableTestSend); return(new NotificationHubAsyncCollector(service, attribute.TagExpression, attribute.EnableTestSend, trace)); }
public Task <IBinding> TryCreateAsync(BindingProviderContext context) { if (context == null) { throw new ArgumentNullException("context"); } ParameterInfo parameter = context.Parameter; NotificationHubAttribute attribute = parameter.GetCustomAttribute <NotificationHubAttribute>(inherit: false); if (attribute == null) { return(Task.FromResult <IBinding>(null)); } if (string.IsNullOrEmpty(_config.ConnectionString) && string.IsNullOrEmpty(attribute.ConnectionString)) { throw new InvalidOperationException( string.Format(CultureInfo.CurrentCulture, "The Notification Hub connection string must be set either via a '{0}' app setting, via the NotificationHubAttribute.ConnectionString property or via NotificationHubsConfiguration.ConnectionString.", NotificationHubsConfiguration.NotificationHubConnectionStringName)); } if (string.IsNullOrEmpty(_config.HubName) && string.IsNullOrEmpty(attribute.HubName)) { throw new InvalidOperationException( string.Format(CultureInfo.CurrentCulture, "The Notification Hub hub name must be set either via a '{0}' app setting, via the NotificationHubAttribute.HubName property or via NotificationHubsConfiguration.HubName.", NotificationHubsConfiguration.NotificationHubSettingName)); } string resolvedConnectionString = ResolveConnectionString(_config.ConnectionString, attribute.ConnectionString); string resolvedHubName = ResolveHubName(_config.HubName, attribute.HubName); INotificationHubClientService service = new NotificationHubClientService(resolvedConnectionString, resolvedHubName); Func <string, INotificationHubClientService> invokeStringBinder = (invokeString) => service; IBinding binding = BindingFactory.BindCollector( parameter, _converterManager, (nhClientService, valueBindingContext) => new NotificationHubAsyncCollector(service, attribute.TagExpression), "NotificationHubs", invokeStringBinder); return(Task.FromResult(binding)); }
public override async Task BindAsync(BindingContext context) { // Only output bindings are supported. if (Access == FileAccess.Write && _bindingDirection == BindingDirection.Out) { NotificationHubAttribute attribute = new NotificationHubAttribute { TagExpression = TagExpression, ConnectionString = ConnectionString, HubName = HubName }; RuntimeBindingContext runtimeContext = new RuntimeBindingContext(attribute); await BindAsyncCollectorAsync <string>(context.Value, context.Binder, runtimeContext); } }
public override async Task BindAsync(BindingContext context) { // Only output bindings are supported. if (Access == FileAccess.Write && _bindingDirection == BindingDirection.Out) { NotificationHubAttribute attribute = new NotificationHubAttribute { TagExpression = TagExpression, ConnectionString = ConnectionString, HubName = HubName }; RuntimeBindingContext runtimeContext = new RuntimeBindingContext(attribute); await BindAsyncCollectorAsync<string>(context.Value, context.Binder, runtimeContext); } }