private static IEnumerable <SwaggerRoute> GenerateEntityRoutes(ODataRoute oDataRoute) { Contract.Requires(oDataRoute != null); return(oDataRoute.GetEdmModel().EntityContainer .EntitySets() .Select(entitySet => new SwaggerRoute(ODataSwaggerUtilities.GetPathForEntity(oDataRoute.RoutePrefix, entitySet), oDataRoute, ODataSwaggerUtilities.CreateSwaggerPathForEntity(entitySet)))); }
private static IEnumerable <SwaggerRoute> GenerateOperationImportRoutes(ODataRoute oDataRoute) { Contract.Requires(oDataRoute != null); return(oDataRoute.GetEdmModel().EntityContainer .OperationImports() .Select(operationImport => new SwaggerRoute(ODataSwaggerUtilities.GetPathForOperationImport(oDataRoute.RoutePrefix, operationImport), oDataRoute, ODataSwaggerUtilities.CreateSwaggerPathForOperationImport(operationImport)))); }
/// <summary> /// Initialize the operations to Swagger model. /// </summary> /// <param name="oDataRoute">The o data route.</param> /// <returns></returns> private static IEnumerable <SwaggerRoute> GenerateOperationRoutes(ODataRoute oDataRoute) { Contract.Requires(oDataRoute != null); var routes = new List <SwaggerRoute>(); foreach (var operation in oDataRoute.GetEdmModel().SchemaElements.OfType <IEdmOperation>()) { // skip unbound operation if (!operation.IsBound) { continue; } var boundParameter = operation.Parameters.First(); var boundType = boundParameter.Type.Definition; // skip operation bound to non entity (or entity collection) if (boundType.TypeKind == EdmTypeKind.Entity) { var entityType = (IEdmEntityType)boundType; routes.AddRange(oDataRoute.GetEdmModel().EntityContainer .EntitySets() .Where(es => es.EntityType().Equals(entityType)) .Select(entitySet => new SwaggerRoute(ODataSwaggerUtilities.GetPathForOperationOfEntity(oDataRoute.RoutePrefix, operation, entitySet), oDataRoute, ODataSwaggerUtilities.CreateSwaggerPathForOperationOfEntity(operation, entitySet)))); } else if (boundType.TypeKind == EdmTypeKind.Collection) { var collectionType = boundType as IEdmCollectionType; if (collectionType != null && collectionType.ElementType.Definition.TypeKind == EdmTypeKind.Entity) { var entityType = (IEdmEntityType)collectionType.ElementType.Definition; routes.AddRange(oDataRoute.GetEdmModel().EntityContainer .EntitySets() .Where(es => es.EntityType().Equals(entityType)) .Select(entitySet => new SwaggerRoute(ODataSwaggerUtilities.GetPathForOperationOfEntitySet(operation, entitySet, oDataRoute.RoutePrefix), oDataRoute, ODataSwaggerUtilities.CreateSwaggerPathForOperationOfEntitySet(operation, entitySet)))); } } } return(routes); }
public IEnumerable <SwaggerRoute> Generate(HttpConfiguration httpConfig) { ODataSwaggerUtilities.SetHttpConfig(httpConfig); return(httpConfig.GetODataRoutes().SelectMany(Generate)); }