public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IApiVersionDescriptionProvider apiVersionProvider, VersionedODataModelBuilder modelBuilder)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();
            app.UseRouting();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            var models = modelBuilder.GetEdmModels();

            app.UseMvc(routeBuilder =>
            {
                routeBuilder.EnableDependencyInjection();
                routeBuilder.Filter().SkipToken();
                var apiVersion = new ApiVersion(1, 0);
                routeBuilder.MapVersionedODataRoutes("odata", string.Empty, modelBuilder.GetEdmModels());
            });

            app.UseCors(options => options.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
            app.UseAuthentication();
            app.Use(async(context, next) =>
            {
                context.Response.Headers.Add("X-Content-Type-Options", "nosniff");
                await next().ConfigureAwait(false);
            });
        }
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, VersionedODataModelBuilder modelBuilder)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseMvc(routeBuilder =>
            {
                // we need to set a new ODataConventionModelBuilder
                // see https://github.com/Microsoft/aspnet-api-versioning/issues/476
                //var bla = modelBuilder.ModelBuilderFactory = () => new ODataConventionModelBuilder();

                var models = modelBuilder.GetEdmModels();

                routeBuilder.Select().Filter().Count().MaxTop(100);
                routeBuilder.ServiceProvider.GetRequiredService <ODataOptions>().UrlKeyDelimiter = ODataUrlKeyDelimiter.Parentheses;

                // odata must be called in the format: http://localhost:5103/odata/StandardProjectReport?api-version=1.0
                routeBuilder.MapVersionedODataRoutes("odata", "odata", models);
            });
        }
Beispiel #3
0
        public virtual void Configure(IApplicationBuilder app, IWebHostEnvironment env, VersionedODataModelBuilder modelBuilder, IApiVersionDescriptionProvider provider)
        {
            if (env.IsDevelopment())
            {
                _ = app.UseDeveloperExceptionPage();
            }
            else
            {
                _ = app.UseHsts();
            }

            _ = app.UseAuthentication()
                .UseAuthorization();
            _ = app
                .UseMvc(routeBuilder =>
            {
                var models    = modelBuilder.GetEdmModels().ToList();
                var singleton = Microsoft.OData.ServiceLifetime.Singleton;
                _             = routeBuilder
                                .SetTimeZoneInfo(TimeZoneInfo.Utc)
                                .Select()
                                .Expand()
                                .OrderBy()
                                .MaxTop(MaxTop ?? 100)
                                .Filter()
                                .Count()
                                .MapVersionedODataRoutes("odata-bypath", "odata/v{version:apiVersion}", models, oBuilder =>
                {
                    _ = oBuilder.AddService <ODataSerializerProvider, NrsrxODataSerializerProvider>(singleton);
                });
            })
                .UseSwagger()
                .UseSwaggerUI(options => SetupSwaggerUI(options, provider));
        }
Beispiel #4
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env,
                              VersionedODataModelBuilder modelBuilder)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseMvc(builder =>
            {
                builder.Select().Expand().Filter().OrderBy().Count().MaxTop(100);
                builder.MapVersionedODataRoutes("odata", "odata", modelBuilder.GetEdmModels());
            });

            BsonClassMap.RegisterClassMap <Book>(cm => {
                cm.AutoMap();
                cm.GetMemberMap(c => c.Title).SetElementName("title");
                cm.GetMemberMap(c => c.Year).SetElementName("year");
                cm.GetMemberMap(c => c.Author).SetElementName("author");
                cm.SetIgnoreExtraElements(true);
            });
        }
Beispiel #5
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
#pragma warning disable CA1822 // Mark members as static
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, VersionedODataModelBuilder modelBuilder)
#pragma warning restore CA1822 // Mark members as static
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            // app.UseHttpsRedirection();
            app.UseMvc(routeBuilder =>
            {
                routeBuilder.EnableDependencyInjection();

                // and this line to enable OData query option, for example $filter
                routeBuilder.Select().Expand().Filter().OrderBy().MaxTop(100).Count();

                var models = modelBuilder.GetEdmModels();

                // routeBuilder.MapODataServiceRoute("ODataRoute", "odata", builder.GetEdmModel());
                // the following will not work as expected
                // BUG: https://github.com/OData/WebApi/issues/1837
                // routeBuilder.SetDefaultODataOptions( new ODataOptions() { UrlKeyDelimiter = Parentheses } );
                routeBuilder.ServiceProvider.GetRequiredService <ODataOptions>().UrlKeyDelimiter = Parentheses;
                routeBuilder.MapVersionedODataRoutes("ODataRoute", "northwind/odata", models);
                routeBuilder.MapVersionedODataRoutes("odata-bypath", "northwind/odata/v{version:apiVersion}", models);
            });
        }
Beispiel #6
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, VersionedODataModelBuilder modelBuilder, IApiVersionDescriptionProvider provider)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseMvc(routes =>
            {
                routes.MapVersionedODataRoute("odata", "odata", modelBuilder.GetEdmModels());
            });

            app.UseSwagger();
            app.UseSwaggerUI(
                swagger =>
            {
                // build a swagger endpoint for each discovered API version
                foreach (var description in provider.ApiVersionDescriptions)
                {
                    swagger.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
                }
                swagger.RoutePrefix = "";
            });
        }
Beispiel #7
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, VersionedODataModelBuilder modelBuilder, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            //Authentication middleware to the middleware pipeline
            app.UseAuthentication();

            //app.UseHttpsRedirection();
            //app.UseCors(AllowOrigins);

            app.UseCors(/*config => config
                         * .AllowAnyOrigin()
                         * .AllowAnyHeader()
                         * .AllowAnyMethod()*/);

            app.UseRouting();

            app.UseMvc(config =>
            {
                config.EnableDependencyInjection(/*m => m.AddService(
                                                  * Microsoft.OData.ServiceLifetime.Singleton,
                                                  * typeof(ODataUriResolver),
                                                  * typeof(UnqualifiedCallAndEnumPrefixFreeResolver))*/);
                //config.SetDefaultODataOptions()
                //config.SetDefaultQuerySettings()
                //config.Count().Filter().OrderBy().Expand().Select().MaxTop(int.MaxValue);
                config.MapVersionedODataRoutes("odata", "v{version:apiVersion}", modelBuilder.GetEdmModels());
            });
        }
        public void Configuration(IAppBuilder appBuilder)
        {
            var configuration = new HttpConfiguration();
            var httpServer    = new HttpServer(configuration);

            // reporting api versions will return the headers "api-supported-versions" and "api-deprecated-versions"
            configuration.AddApiVersioning(o => o.ReportApiVersions = true);
            configuration.EnableCaseInsensitive(true);
            configuration.EnableUnqualifiedNameCall(true);

            var modelBuilder = new VersionedODataModelBuilder(configuration)
            {
                ModelBuilderFactory = () => new ODataConventionModelBuilder().EnableLowerCamelCase(),
                ModelConfigurations =
                {
                    new PersonModelConfiguration(),
                    new OrderModelConfiguration()
                }
            };
            var models       = modelBuilder.GetEdmModels();
            var batchHandler = new DefaultODataBatchHandler(httpServer);

            configuration.MapVersionedODataRoutes("odata", "api", models, batchHandler);
            configuration.MapVersionedODataRoutes("odata-bypath", "v{apiVersion}", models, batchHandler);
            appBuilder.UseWebApi(httpServer);
        }
        public void Configure(IApplicationBuilder app, VersionedODataModelBuilder modelBuilder, IApiVersionDescriptionProvider provider)
        {
            app.UseMvc(routeBuilder =>
            {
                // the following will not work as expected
                // BUG: https://github.com/OData/WebApi/issues/1837
                // routeBuilder.SetDefaultODataOptions( new ODataOptions() { UrlKeyDelimiter = Parentheses } );
                routeBuilder.ServiceProvider.GetRequiredService <ODataOptions>().UrlKeyDelimiter = Parentheses;

                // global odata query options
                routeBuilder.Count();

                routeBuilder.MapVersionedODataRoutes("odata", "api/v{apiVersion}", modelBuilder.GetEdmModels());
            });

            app.UseAuthorization();
            app.UseSwagger();
            app.UseSwaggerUI(
                options =>
            {
                foreach (var description in provider.ApiVersionDescriptions)
                {
                    options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
                }
            });
        }
        public BasicFixture()
        {
            FilteredControllerTypes.Add(typeof(OrdersController));
            FilteredControllerTypes.Add(typeof(PeopleController));
            FilteredControllerTypes.Add(typeof(People2Controller));
            FilteredControllerTypes.Add(typeof(CustomersController));
            FilteredControllerTypes.Add(typeof(WeatherForecastsController));

            Configuration.AddApiVersioning(options => options.ReportApiVersions = true);

            var modelBuilder = new VersionedODataModelBuilder(Configuration)
            {
                ModelConfigurations =
                {
                    new PersonModelConfiguration(),
                    new OrderModelConfiguration(),
                    new CustomerModelConfiguration(),
                    new WeatherForecastModelConfiguration(),
                }
            };
            var models = modelBuilder.GetEdmModels();

            Configuration.MapVersionedODataRoute("odata", "api", models);
            Configuration.MapVersionedODataRoute("odata-bypath", "v{apiVersion}", models);
            Configuration.EnsureInitialized();
        }
        protected AdvancedAcceptanceTest()
        {
            FilteredControllerTypes.Add(typeof(OrdersController));
            FilteredControllerTypes.Add(typeof(Orders2Controller));
            FilteredControllerTypes.Add(typeof(Orders3Controller));
            FilteredControllerTypes.Add(typeof(PeopleController));
            FilteredControllerTypes.Add(typeof(People2Controller));

            Configuration.AddApiVersioning(
                options =>
            {
                options.ReportApiVersions = true;
                options.AssumeDefaultVersionWhenUnspecified = true;
                options.ApiVersionReader = ApiVersionReader.Combine(
                    new QueryStringApiVersionReader(),
                    new HeaderApiVersionReader("api-version", "x-ms-version"));
            });

            var modelBuilder = new VersionedODataModelBuilder(Configuration)
            {
                ModelBuilderFactory = () => new ODataConventionModelBuilder().EnableLowerCamelCase(),
                ModelConfigurations =
                {
                    new PersonModelConfiguration(),
                    new OrderModelConfiguration(supportedApiVersion: new ApiVersion(2, 0))
                }
            };
            var models = modelBuilder.GetEdmModels();

            Configuration.MapVersionedODataRoutes("odata", "api", models, builder => builder.AddService(Singleton, typeof(ODataUriResolver), sp => TestUriResolver));
            Configuration.Routes.MapHttpRoute("orders", "api/{controller}/{key}", new { key = Optional });
            Configuration.EnsureInitialized();
        }
Beispiel #12
0
        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();
            var httpServer = new HttpServer(config);

            config.AddApiVersioning();
            config.Select().Expand().Filter().OrderBy().MaxTop(null).Count();

            var modelBuilder = new VersionedODataModelBuilder(config)
            {
                ModelBuilderFactory = () => new ODataConventionModelBuilder().EnableLowerCamelCase(),
                ModelConfigurations =
                {
                    new FlightPlanConfiguration(),
                    new FlightDetailsConfiguration()
                }
            };
            var models       = modelBuilder.GetEdmModels();
            var batchHandler = new DefaultODataBatchHandler(httpServer);
            var conventions  = ODataRoutingConventions.CreateDefault();

            conventions.Insert(0, new CompositeKeyRoutingConvention());

            config.MapVersionedODataRoutes("odata", "data/v{apiVersion}", models, ConfigureODataServices, batchHandler);
            //config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional });
            //config.MapVersionedODataRoutes("odata", "data/v{apiVersion}", models, new DefaultODataPathHandler(),conventions, batchHandler);
        }
Beispiel #13
0
        public static HttpConfiguration NewOrdersConfiguration()
        {
            var configuration          = new HttpConfiguration();
            var controllerTypeResolver = new ControllerTypeCollection(
                typeof(Simulators.V1.OrdersController),
                typeof(Simulators.V2.OrdersController),
                typeof(Simulators.V3.OrdersController));

            configuration.Services.Replace(typeof(IHttpControllerTypeResolver), controllerTypeResolver);
            configuration.AddApiVersioning(
                options =>
            {
                options.Conventions.Controller <Simulators.V1.OrdersController>()
                .HasApiVersion(1, 0)
                .HasDeprecatedApiVersion(0, 9)
                .Action(c => c.Post(default(Order))).MapToApiVersion(1, 0);
                options.Conventions.Controller <Simulators.V2.OrdersController>()
                .HasApiVersion(2, 0);
                options.Conventions.Controller <Simulators.V3.OrdersController>()
                .HasApiVersion(3, 0)
                .AdvertisesApiVersion(4, 0);
            });
            var builder = new VersionedODataModelBuilder(configuration)
            {
                ModelConfigurations = { new OrderModelConfiguration() }
            };
            var models = builder.GetEdmModels();

            configuration.MapVersionedODataRoutes("odata", "api", models);

            return(configuration);
        }
Beispiel #14
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, VersionedODataModelBuilder modelBuilder)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            var models = modelBuilder.GetEdmModels();

            app.UseMvc(routes => {
                routes.Select().Filter().OrderBy().Count();

                routes.MapVersionedODataRoutes("odata", "odata", models);
            });

            //app.UseEndpoints(endpoints =>
            //{
            //    endpoints.MapControllers();
            //    endpoints.Select().Expand().OrderBy().Filter().MaxTop(100).Count();
            //    endpoints.MapODataRoute("odata", "odata", builder.GetEdmModel());
            //});
        }
Beispiel #15
0
        public void Configuration(IAppBuilder appBuilder)
        {
            var configuration = new HttpConfiguration();
            var httpServer    = new HttpServer(configuration);

            // reporting api versions will return the headers "api-supported-versions" and "api-deprecated-versions"
            configuration.AddApiVersioning(options => options.ReportApiVersions = true);

            var modelBuilder = new VersionedODataModelBuilder(configuration)
            {
                ModelConfigurations =
                {
                    new PersonModelConfiguration(),
                    new OrderModelConfiguration()
                }
            };
            var models       = modelBuilder.GetEdmModels();
            var batchHandler = new DefaultODataBatchHandler(httpServer);

            // NOTE: you do NOT and should NOT use both the query string and url segment methods together.
            // this configuration is merely illustrating that they can coexist and allows you to easily
            // experiment with either configuration. one of these would be removed in a real application.
            configuration.MapVersionedODataRoutes("odata", "api", models, ConfigureContainer, batchHandler);
            configuration.MapVersionedODataRoutes("odata-bypath", "api/v{apiVersion}", models, ConfigureContainer);

            appBuilder.UseWebApi(httpServer);
        }
        public AdvancedFixture()
        {
            FilteredControllerTypes.Add(typeof(OrdersController));
            FilteredControllerTypes.Add(typeof(Orders2Controller));
            FilteredControllerTypes.Add(typeof(Orders3Controller));
            FilteredControllerTypes.Add(typeof(PeopleController));
            FilteredControllerTypes.Add(typeof(People2Controller));

            Configuration.AddApiVersioning(
                options =>
            {
                options.ReportApiVersions = true;
                options.AssumeDefaultVersionWhenUnspecified = true;
                options.ApiVersionReader = ApiVersionReader.Combine(
                    new QueryStringApiVersionReader(),
                    new HeaderApiVersionReader("api-version", "x-ms-version"));
            });

            var modelBuilder = new VersionedODataModelBuilder(Configuration)
            {
                ModelConfigurations =
                {
                    new PersonModelConfiguration(),
                    new OrderModelConfiguration(supportedApiVersion: new ApiVersion(2, 0)),
                }
            };
            var models = modelBuilder.GetEdmModels();

            Configuration.MapVersionedODataRoute("odata", "api", models);
            Configuration.Routes.MapHttpRoute("orders", "api/{controller}/{key}", new { key = Optional });
            Configuration.Formatters.Remove(Configuration.Formatters.XmlFormatter);
            Configuration.EnsureInitialized();
        }
Beispiel #17
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, VersionedODataModelBuilder modelBuilder,
                              IApiVersionDescriptionProvider provider, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();
            app.UseApiVersioning();

            app.UseAuthorization();

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

            app.UseMvc(builder => {
                var edmModels = modelBuilder.GetEdmModels();
                builder.MapVersionedODataRoutes("odata", "odata", edmModels);
            });
            app.UseSwagger();
            app.UseSwaggerUI(options => {
                // build a swagger endpoint for each discovered API version
                foreach (var description in provider.ApiVersionDescriptions)
                {
                    options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
                }
            });
        }
Beispiel #18
0
        public void Configuration(IAppBuilder builder)
        {
            var configuration = new HttpConfiguration();
            var httpServer    = new HttpServer(configuration);

            configuration.AddApiVersioning(options => options.ReportApiVersions = true);

            //-----DATA-----
            var modelBuilder = new VersionedODataModelBuilder(configuration)
            {
                ModelConfigurations = { new DataModelConfiguration() }
            };
            var models = modelBuilder.GetEdmModels();

            configuration.MapVersionedODataRoutes("odata-data", "data/v{apiVersion}", models);


            //-----CONFIG-----
            var configModelBuilder = new VersionedODataModelBuilder(configuration)
            {
                ModelConfigurations = { new ConfigModelConfiguration() }
            };
            var configModels = configModelBuilder.GetEdmModels();

            configuration.MapVersionedODataRoutes("odata-config", "config/v{apiVersion}", configModels);

            var apiExplorer = configuration.AddODataApiExplorer(
                options => {
                options.GroupNameFormat           = "'v'VVV";
                options.SubstituteApiVersionInUrl = true;
            });

            builder.UseWebApi(httpServer);
        }
Beispiel #19
0
        protected ConventionsAcceptanceTest()
        {
            FilteredControllerTypes.Add(typeof(OrdersController));
            FilteredControllerTypes.Add(typeof(PeopleController));
            FilteredControllerTypes.Add(typeof(People2Controller));

            Configuration.AddApiVersioning(
                options =>
            {
                options.ReportApiVersions = true;
                options.Conventions.Controller <OrdersController>()
                .HasApiVersion(1, 0);
                options.Conventions.Controller <PeopleController>()
                .HasApiVersion(1, 0)
                .HasApiVersion(2, 0)
                .Action(c => c.Patch(default(int), null, null)).MapToApiVersion(2, 0);
                options.Conventions.Controller <People2Controller>()
                .HasApiVersion(3, 0);
            });

            var modelBuilder = new VersionedODataModelBuilder(Configuration)
            {
                ModelBuilderFactory = () => new ODataConventionModelBuilder().EnableLowerCamelCase(),
                ModelConfigurations =
                {
                    new PersonModelConfiguration(),
                    new OrderModelConfiguration()
                }
            };
            var models = modelBuilder.GetEdmModels();

            Configuration.MapVersionedODataRoutes("odata", "api", models);
            Configuration.MapVersionedODataRoutes("odata-bypath", "v{apiVersion}", models);
            Configuration.EnsureInitialized();
        }
Beispiel #20
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(
            IApplicationBuilder app,
            IHostingEnvironment env,
            VersionedODataModelBuilder modelBuilder,
            IApiVersionDescriptionProvider provider)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMvc(b =>
            {
                // Globally enabling all OData query options:
                b.Select().Expand().Filter().OrderBy().MaxTop(100).Count();

                b.MapVersionedODataRoutes("odata", "odata/v{version:apiVersion}", modelBuilder.GetEdmModels());
            });

            app.UseSwagger();
            app.UseSwaggerUI(
                options =>
            {
                // build a swagger endpoint for each discovered API version
                foreach (var description in provider.ApiVersionDescriptions)
                {
                    options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
                }
            });
        }
Beispiel #21
0
        public void Configuration(IAppBuilder appBuilder)
        {
            var configuration = new HttpConfiguration();
            var httpServer    = new HttpServer(configuration);

            configuration.AddApiVersioning(
                o =>
            {
                o.ReportApiVersions = true;
                o.AssumeDefaultVersionWhenUnspecified = true;
                o.ApiVersionReader = ApiVersionReader.Combine(
                    new QueryStringApiVersionReader(),
                    new HeaderApiVersionReader("api-version", "x-ms-version"));
            });

            var modelBuilder = new VersionedODataModelBuilder(configuration)
            {
                ModelBuilderFactory = () => new ODataConventionModelBuilder().EnableLowerCamelCase(),
                ModelConfigurations =
                {
                    new PersonModelConfiguration(),
                    new OrderModelConfiguration()
                }
            };
            var models       = modelBuilder.GetEdmModels();
            var batchHandler = new DefaultODataBatchHandler(httpServer);

            configuration.MapVersionedODataRoutes("odata", "api", models, OnConfigureContainer, batchHandler);
            configuration.Routes.MapHttpRoute("orders", "api/{controller}/{id}", new { id = Optional });
            appBuilder.UseWebApi(httpServer);
        }
        internal static void ConfigureOData(this HttpConfiguration configuration, HttpServer httpServer)
        {
            // BUG: cannot use alt keys and unqualified actions in 5.9.1; may be resolvable in 6.0, but that isn't not supported by API versioning - yet
            // REF: https://github.com/OData/WebApi/issues/636

            //configuration.EnableAlternateKeys( true );
            configuration.EnableCaseInsensitive(true);
            configuration.EnableUnqualifiedNameCall(true);
            configuration.EnableEnumPrefixFree(true);
            configuration.EnableMediaResources();

            var modelConfigurations = configuration.DependencyResolver.GetServices <IModelConfiguration>();
            var builder             = new VersionedODataModelBuilder(configuration)
            {
                ModelBuilderFactory = () => new ODataConventionModelBuilder()
                {
                    Namespace = nameof(Contoso)
                }.EnableLowerCamelCase(),
                OnModelCreated = BuilderExtensions.ApplyAnnotations
            };

            builder.ModelConfigurations.AddRange(modelConfigurations);

            var models       = builder.GetEdmModels();
            var batchHandler = new DefaultODataBatchHandler(httpServer);

            configuration.MapVersionedODataRoutes("odata", RoutePrefix, models, batchHandler);
        }
Beispiel #23
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, VersionedODataModelBuilder oDataModelBuilder)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();

                app.UseExceptionHandler(builder =>
                {
                    builder.Run(async ctx =>
                    {
                        ctx.Response.StatusCode = (int)HttpStatusCode.InternalServerError;

                        var error = ctx.Features.Get <IExceptionHandlerFeature>();

                        if (error != null)
                        {
                            ctx.Response.AddApplicationError(error.Error.Message);
                            await ctx.Response.WriteAsync(error.Error.Message);
                        }
                    });
                });
            }

            app.UseCors(opt => opt.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());

            //app.UseHttpsRedirection();

            app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
            });

            app.UseAuthentication();

            app.UseMvc(builder =>
            {
                builder.Select().Expand().Filter().OrderBy().Count().MaxTop(100);
                builder.MapVersionedODataRoutes("ODataRoutes", "odata", oDataModelBuilder.GetEdmModels());
                builder.EnableDependencyInjection();
            });

            app.UseSwagger();

            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("v1/swagger.json", "ICMSKD API v1.0");
            });

            if (!string.IsNullOrEmpty(Configuration["PathBase"]))
            {
                app.UsePathBase(Configuration["PathBase"]);
            }
        }
        public void Configure(
            IApplicationBuilder app,
            IWebHostEnvironment env,
            VersionedODataModelBuilder modelBuilder
            )
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();

            app.UseAuthentication();

            app.UseMvc(routes =>
            {
                routes.Select().Expand().Filter().OrderBy().MaxTop(100).Count();
                routes.MapVersionedODataRoutes("odata", "odata", modelBuilder.GetEdmModels());
                routes.EnableDependencyInjection();
            });

            app.Map("/hello", v =>
            {
                v.Run(async ctx =>
                {
                    ctx.Response.StatusCode = (int)HttpStatusCode.OK;
                    await ctx.Response.WriteAsync("hello world");
                });
            });

            foreach (string route in new string[] { "/api", "/odata" })
            {
                app.Map(route, builder =>
                {
                    builder.Run(async context =>
                    {
                        context.Response.StatusCode = (int)HttpStatusCode.NotFound;
                        await context.Response.WriteAsync("");
                    });
                });
            }

            app.UseSpa(spa =>
            {
                spa.Options.SourcePath = "web";

                if (env.IsDevelopment())
                {
                    spa.UseProxyToSpaDevelopmentServer("http://localhost:3000");
                }
            });
        }
Beispiel #25
0
 // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
 public void Configure(IApplicationBuilder app, IHostingEnvironment env, VersionedODataModelBuilder modelBuilder)
 {
     app.UseMvc(
         routeBuilder =>
     {
         var models = modelBuilder.GetEdmModels();
         routeBuilder.MapVersionedODataRoutes("odata", "api", models);
         routeBuilder.MapVersionedODataRoutes("odata-bypath", "v{version:apiVersion}", models);
     });
 }
 public void Configure(IApplicationBuilder app, VersionedODataModelBuilder modelBuilder)
 {
     app.UseRouting();
     app.UseEndpoints(
         endpoints =>
     {
         endpoints.MapControllers();
         endpoints.MapVersionedODataRoute("odata", "api", modelBuilder.GetEdmModels());
     });
 }
Beispiel #27
0
        public void Configure(IApplicationBuilder app, VersionedODataModelBuilder modelBuilder, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHttpStatusExceptionHandler();
            }

            app.UseHangfireServer();
            app.UseHangfireDashboard(options: new DashboardOptions
            {
                Authorization = new[]
                {
                    new HangfireAuthorizationFilter()
                }
            });

            app.UseCors("CorsForUI");

            app.UseHttpsRedirection();

            app.UseSerilogRequestLogging();

            app.UseForwardedHeaders(ForwardedHeadersSettings.Options);

            app.UseODataRouting();
            app.UseRouting();

            app.UseIdentityServer();
            app.UseAuthentication();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.Filter().Count().OrderBy().Select().Expand().MaxTop(1000);
                endpoints.MapVersionedODataRoute("odata", "odata", modelBuilder.GetEdmModels());
                endpoints.SetTimeZoneInfo(TimeZoneInfo.Utc);
            });

            app.UseSwagger();
            app.UseSwaggerUI(options =>
            {
                options.SwaggerEndpoint("/swagger/v1/swagger.json", "Happy Exadel Hours API V1");
                options.OAuthClientId("HEHApiClient");
                options.OAuthAppName("Happy Exadel Hours Api client");
                options.RoutePrefix = string.Empty;
            });

            app.ApplicationServices.GetService <INotificationScheduler>()?.StartJobs();
        }
Beispiel #28
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, VersionedODataModelBuilder modelBuilder)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            var models = modelBuilder.GetEdmModels();

            app.UseMvc(routes => routes.MapVersionedODataRoutes("odata", "odata", models));
        }
Beispiel #29
0
        /// <summary>
        /// Configures the application using the provided builder.
        /// </summary>
        /// <param name="builder">The current application builder.</param>
        public void Configuration(IAppBuilder builder)
        {
            var configuration = new HttpConfiguration();
            var httpServer    = new HttpServer(configuration);

            // reporting api versions will return the headers "api-supported-versions" and "api-deprecated-versions"
            configuration.AddApiVersioning(options => options.ReportApiVersions = true);

            // note: this is required to make the default swagger json settings match the odata conventions applied by EnableLowerCamelCase()
            configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

            var modelBuilder = new VersionedODataModelBuilder(configuration)
            {
                ModelConfigurations =
                {
                    new AllConfigurations(),
                    new PersonModelConfiguration(),
                    new OrderModelConfiguration(),
                    new ProductConfiguration(),
                    new SupplierConfiguration(),
                }
            };
            var models = modelBuilder.GetEdmModels();

            // global odata query options
            configuration.Count();

            // INFO: you do NOT and should NOT use both the query string and url segment methods together.
            // this configuration is merely illustrating that they can coexist and allows you to easily
            // experiment with either configuration. one of these would be removed in a real application.
            //
            // INFO: only pass the route prefix to GetEdmModels if you want to split the models; otherwise, both routes contain all models

            // WHEN VERSIONING BY: query string, header, or media type
            configuration.MapVersionedODataRoute("odata", "api", models);

            // WHEN VERSIONING BY: url segment
            // configuration.MapVersionedODataRoute( "odata-bypath", "api/v{apiVersion}", models );

            // add the versioned IApiExplorer and capture the strongly-typed implementation (e.g. ODataApiExplorer vs IApiExplorer)
            // note: the specified format code will format the version as "'v'major[.minor][-status]"
            var apiExplorer = configuration.AddODataApiExplorer(
                options =>
            {
                options.GroupNameFormat = "'v'VVV";

                // note: this option is only necessary when versioning by url segment. the SubstitutionFormat
                // can also be used to control the format of the API version in route templates
                options.SubstituteApiVersionInUrl = true;

                // configure query options (which cannot otherwise be configured by OData conventions)
                options.QueryOptions.Controller <V2.PeopleController>()
                .Action(c => c.Get(default))
Beispiel #30
0
 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, VersionedODataModelBuilder modelBuilder)
 {
     loggerFactory.AddConsole(Configuration.GetSection("Logging"));
     loggerFactory.AddDebug();
     app.UseMvc(
         routeBuilder =>
     {
         var models = modelBuilder.GetEdmModels();
         routeBuilder.MapVersionedODataRoutes("odata", "api", models);
         routeBuilder.MapVersionedODataRoutes("odata-bypath", "v{version:apiVersion}", models);
     });
 }