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); }
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); }