Beispiel #1
0
 public SessionData(Uri upstream, Uri hostUri, Worker worker, TimeSpan sessionTimeout)
 {
     Upstream     = upstream;
     HostUri      = hostUri;
     UpstreamHost = new UpstreamHost(upstream.AbsoluteUri);
     Worker       = worker;
     Timeout      = sessionTimeout;
 }
Beispiel #2
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseMiddleware <Arcus.WebApi.Logging.ExceptionHandlingMiddleware>();
            app.UseCorrelation();
            app.UseRouting();

            //var roundRobin = new RoundRobin
            //{
            //    new UpstreamHost("https://codit-mock-server.azure-api.net/ord", weight: 1),
            //    new UpstreamHost("https://codit-mock-server.azure-api.net/cat", weight: 2),
            //    new UpstreamHost("https://codit-mock-server.azure-api.net/prod", weight: 3)
            //};


#warning Please configure application with HTTPS transport layer security

#warning Please configure application with authentication mechanism: https://webapi.arcus-azure.net/features/security/auth/shared-access-key

#if DEBUG
            app.UseSwagger(swaggerOptions =>
            {
                swaggerOptions.RouteTemplate = "api/{documentName}/docs.json";
            });
            app.UseSwaggerUI(swaggerUiOptions =>
            {
                swaggerUiOptions.SwaggerEndpoint("/api/v1/docs.json", "Arcus.Demo.WebAPI");
                swaggerUiOptions.RoutePrefix   = "api/docs";
                swaggerUiOptions.DocumentTitle = "Arcus.Demo.WebAPI";
            });
#endif

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/api/orders/{*url}", async x =>
                {
                    // check for everything after orders
                    app.RunProxy(async context =>
                    {
                        var host = new UpstreamHost("https://codit-mock-server.azure-api.net/ord");

                        var response = await context
                                       .ForwardTo(host)
                                       .Send();
                        return(response);
                    });
                });
                endpoints.MapGet("/api/catalog/{*url}", async x =>
                {
                    app.RunProxy(async context =>
                    {
                        var host = new UpstreamHost("https://codit-mock-server.azure-api.net/cat");

                        return(await context
                               .ForwardTo(host)
                               .Send());
                    });
                });
                endpoints.MapGet("/api/products/{*url}", async x =>
                {
                    app.RunProxy(async context =>
                    {
                        var host = new UpstreamHost("https://codit-mock-server.azure-api.net/prod");

                        return(await context
                               .ForwardTo(host)
                               .Send());
                    });
                });
                endpoints.MapControllerRoute(
                    name: "Health_Get",
                    pattern: "api/v1/health"
                    );
                endpoints.MapControllerRoute(
                    name: "Health_Get_Startup",
                    pattern: "/"
                    );
            });

            //app.UseEndpoints(endpoints => endpoints.MapControllers());
        }