Exemplo n.º 1
0
        public static SwaggerRouteBuilder AddCustomSwaggerRoute(this HttpConfiguration httpConfig, ODataRoute oDataRoute, string routeTemplate)
        {
            Contract.Requires(httpConfig != null);
            Contract.Requires(oDataRoute != null);
            Contract.Requires(httpConfig.Properties != null);
            Contract.Ensures(Contract.Result <SwaggerRouteBuilder>() != null);

            oDataRoute.SetHttpConfiguration(httpConfig);

            var urlDecodedTemplate = HttpUtility.UrlDecode(routeTemplate);

            Contract.Assume(!string.IsNullOrWhiteSpace(urlDecodedTemplate));

            var swaggerRoute = new SwaggerRoute(urlDecodedTemplate, oDataRoute);

            var swaggerRouteBuilder = new SwaggerRouteBuilder(swaggerRoute);

            httpConfig.Properties.AddOrUpdate(oDataRoute,
                                              key => new List <SwaggerRoute> {
                swaggerRoute
            },
                                              (key, value) => {
                var swaggerRoutes = value as List <SwaggerRoute>;
                swaggerRoutes.Add(swaggerRoute);
                return(swaggerRoutes);
            });

            return(swaggerRouteBuilder);
        }
Exemplo n.º 2
0
        public static SwaggerRouteBuilder AddCustomSwaggerRoute(this HttpConfiguration httpConfig, ODataRoute oDataRoute, string routeTemplate)
        {
            Contract.Requires(httpConfig != null);
            Contract.Requires(oDataRoute != null);
            Contract.Ensures(Contract.Result <SwaggerRouteBuilder>() != null);

            var fullRouteTemplate = HttpUtility.UrlDecode(oDataRoute.RoutePrefix.AppendPathSegment(routeTemplate));

            var swaggerRoute = new SwaggerRoute(fullRouteTemplate, oDataRoute);

            var swaggerRouteBuilder = new SwaggerRouteBuilder(swaggerRoute);

            httpConfig.Properties.AddOrUpdate(oDataRoute,
                                              key => new List <SwaggerRoute> {
                swaggerRoute
            },
                                              (key, value) =>
            {
                var swaggerRoutes = value as List <SwaggerRoute>;
                swaggerRoutes.Add(swaggerRoute);
                return(swaggerRoutes);
            });

            return(swaggerRouteBuilder);
        }