private void Apply(IOwinConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } Configure(configurer => { configurer.Http.IncludeErrorDetailPolicy = _errorDetailPolicy; if (!_allowCaching) { configurer.Http.MessageHandlers.Add(new NoCachingHandler()); } if (!_allowHttpFormatter) { configurer.Http.Formatters.Remove(configurer.Http.Formatters.XmlFormatter); } }); foreach (Action <IOwinConfiguration> configurer in _configurers) { configurer(configuration); } }
public static IAppBuilder UsePlatibusMiddleware(this IAppBuilder app, IOwinConfiguration configuration) { if (app == null) { throw new ArgumentNullException(nameof(app)); } return(app.UsePlatibusMiddlewareAsync(configuration).GetResultFromCompletionSource()); }
private ResourceTypeDictionaryRouter InitResourceRouter(IOwinConfiguration configuration, HttpTransportService transportService) { var authorizationService = configuration.AuthorizationService; var subscriptionTrackingService = configuration.SubscriptionTrackingService; return(new ResourceTypeDictionaryRouter(configuration.BaseUri) { { "message", new MessageController(transportService.ReceiveMessage, authorizationService) }, { "topic", new TopicController(subscriptionTrackingService, configuration.Topics, authorizationService) }, { "journal", new JournalController(configuration.MessageJournal, configuration.AuthorizationService) }, { "metrics", new MetricsController(_metricsCollector) }, }); }
private void Configure(IOwinConfiguration owin) { if (owin == null) { throw new ArgumentNullException(nameof(owin)); } owin.Http.Routes.IgnoreRoute("signalR", "signalr/{*pathInfo}"); IDependencyResolver resolver = GlobalHost.DependencyResolver = new CustomResolver(GlobalHost.DependencyResolver, owin.Kernel); var hubConfiguration = new HubConfiguration { Resolver = resolver, EnableDetailedErrors = _enableDetailedErrors, EnableJavaScriptProxies = _enableJavaScriptProxies, EnableJSONP = _enableJSONP }; resolver.Register(typeof(IAssemblyLocator), () => new CustomAssemblyLocator(_assemblies)); resolver.Register(typeof(IHubActivator), () => new CustomHubActivator(resolver)); resolver.Register(typeof(IHubDescriptorProvider), () => new CustomHubDescriptorProvider(resolver, owin.Kernel.Resolve <IHubsProvider>())); IHubPipeline hubPipeline = resolver.Resolve <IHubPipeline>(); foreach (var pipelineModule in owin.Kernel.ResolveAll <IHubPipelineModule>()) { hubPipeline.AddModule(pipelineModule); } owin.App.Map(_path, subApp => { _onMap?.Invoke(subApp); subApp.RunSignalR(hubConfiguration); }); // TODO: Look at the possibility to add custom trace sources programatically // https://msdn.microsoft.com/en-us/library/ms228984(v=vs.110).aspx if (!_skipTraceConfiguration) { ITraceManager traceManager = resolver.Resolve <ITraceManager>(); traceManager.Switch.Level = _traceLevel; } }
private static async Task <IAppBuilder> UsePlatibusMiddlewareAsync(this IAppBuilder app, IOwinConfiguration configuration) { var baseUri = configuration.BaseUri; var subscriptionTrackingService = configuration.SubscriptionTrackingService; var messageQueueingService = configuration.MessageQueueingService; var transportServiceOptions = new HttpTransportServiceOptions(baseUri, messageQueueingService, subscriptionTrackingService) { DiagnosticService = configuration.DiagnosticService, Endpoints = configuration.Endpoints, MessageJournal = configuration.MessageJournal, BypassTransportLocalDestination = configuration.BypassTransportLocalDestination }; var transportService = new HttpTransportService(transportServiceOptions); var bus = new Bus(configuration, baseUri, transportService, messageQueueingService); await transportService.Init(); await bus.Init(); var middleware = new PlatibusMiddleware(configuration, bus, transportService); var appProperties = new AppProperties(app.Properties); appProperties = appProperties.Set("platibus.Bus", bus); appProperties.OnAppDisposing.Register(() => { middleware.Dispose(); transportService.Dispose(); bus.Dispose(); (messageQueueingService as IDisposable)?.Dispose(); (subscriptionTrackingService as IDisposable)?.Dispose(); }); return(app.Use(middleware.Invoke)); }
public PlatibusMiddleware(IOwinConfiguration configuration, IBus bus, HttpTransportService transportService) { Configuration = configuration ?? throw new ArgumentNullException(nameof(bus)); Bus = bus ?? throw new ArgumentNullException(nameof(bus)); _resourceRouter = InitResourceRouter(Configuration, transportService); }