Example #1
0
        public void Configure(IAppBuilder appBuilder)
        {
            // Configure Web API for self-host.
            var config = new HttpConfiguration();

            var services = config.Services;

            if (services == null)
            {
                throw new InvalidOperationException();
            }

            Configuration.Cors.Select(configuration => configuration.AsCorsOptions())
            ?.ToList()
            .ForEach(corsOptions => appBuilder.UseCors(corsOptions));

            var constraintResolver = new DefaultInlineConstraintResolver();

            constraintResolver.ConstraintMap?.Add(nameof(AdminActions), typeof(AdminActionsConstraint));
            constraintResolver.ConstraintMap?.Add(nameof(LookupKey), typeof(LookupKey.Constraint));
            constraintResolver.ConstraintMap?.Add(nameof(ChatMessage), typeof(ChatMessage.Constraint));

            // Map routes
            config.MapHttpAttributeRoutes(constraintResolver, new VersionedRouteProvider());
            config.DependencyResolver = new IntersectServiceDependencyResolver(Configuration, config);

            // Make JSON the default response type for browsers
            config.Formatters?.JsonFormatter?.Map("accept", "text/html", "application/json");

            if (Configuration.DebugMode)
            {
                appBuilder.SetLoggerFactory(new IntersectLoggerFactory());
            }

            if (Configuration.RequestLogging)
            {
                appBuilder.Use <IntersectRequestLoggingMiddleware>(Configuration.RequestLogLevel);
            }

            appBuilder.Use <IntersectThrottlingMiddleware>(
                Configuration.ThrottlePolicy, null, Configuration.FallbackClientKey, null
                );

            AuthenticationProvider.Configure(appBuilder);

            appBuilder.UseWebApi(config);
        }