/// <summary> /// Create a map of <see cref="OpenApiPathItem"/>. /// </summary> /// <param name="context">The OData context.</param> /// <returns>The created map of <see cref="OpenApiPathItem"/>.</returns> public static IDictionary <string, OpenApiPathItem> CreatePathItems(this ODataContext context) { Utils.CheckArgumentNull(context, nameof(context)); IDictionary <string, OpenApiPathItem> pathItems = new Dictionary <string, OpenApiPathItem>(); if (context.EntityContainer == null) { return(pathItems); } OpenApiConvertSettings settings = context.Settings.Clone(); settings.EnableKeyAsSegment = context.KeyAsSegment; foreach (ODataPath path in context.AllPaths) { try { IPathItemHandler handler = context.PathItemHanderProvider.GetHandler(path.Kind); if (handler == null) { continue; } pathItems.Add(path.GetPathItemName(settings), handler.CreatePathItem(context, path)); }catch (Exception ex) { System.Diagnostics.Trace.WriteLine("Error generating path:" + ex.Message); } } return(pathItems); }
/// <summary> /// Create a map of <see cref="OpenApiPathItem"/>. /// </summary> /// <param name="context">The OData context.</param> /// <returns>The created map of <see cref="OpenApiPathItem"/>.</returns> public static IDictionary <string, OpenApiPathItem> CreatePathItems(this ODataContext context) { Utils.CheckArgumentNull(context, nameof(context)); IDictionary <string, OpenApiPathItem> pathItems = new Dictionary <string, OpenApiPathItem>(); if (context.EntityContainer == null) { return(pathItems); } OpenApiConvertSettings settings = context.Settings.Clone(); settings.EnableKeyAsSegment = context.KeyAsSegment; foreach (ODataPath path in context.AllPaths) { IPathItemHandler handler = context.PathItemHanderProvider.GetHandler(path.Kind); if (handler == null) { continue; } pathItems.Add(path.GetPathItemName(settings), handler.CreatePathItem(context, path)); } return(pathItems); }
/// <summary> /// Create a map of <see cref="OpenApiPathItem"/>. /// </summary> /// <param name="context">The OData context.</param> /// <returns>The created map of <see cref="OpenApiPathItem"/>.</returns> public static IDictionary <string, OpenApiPathItem> CreatePathItems(this ODataContext context) { Utils.CheckArgumentNull(context, nameof(context)); IDictionary <string, OpenApiPathItem> pathItems = new Dictionary <string, OpenApiPathItem>(); if (context.EntityContainer == null) { return(pathItems); } OpenApiConvertSettings settings = context.Settings.Clone(); settings.EnableKeyAsSegment = context.KeyAsSegment; foreach (ODataPath path in context.AllPaths) { IPathItemHandler handler = context.PathItemHanderProvider.GetHandler(path.Kind); if (handler == null) { continue; } if (path.PathTemplate != null) { pathItems.Add(path.PathTemplate, handler.CreatePathItem(context, path)); } else { pathItems.Add(path.GetPathItemName(settings), handler.CreatePathItem(context, path)); } } if (settings.ShowRootPath) { OpenApiPathItem rootPath = new() { Operations = new Dictionary <OperationType, OpenApiOperation> { { OperationType.Get, new OpenApiOperation { OperationId = "graphService.GetGraphService", Responses = new OpenApiResponses() { { "200", new OpenApiResponse() { Description = "OK", Links = CreateRootLinks(context.EntityContainer) } } } } } } }; pathItems.Add("/", rootPath); } return(pathItems); }
public void GetHandlerReturnsNullForUnknownPathKind() { // Arrange PathItemHandlerProvider provider = new PathItemHandlerProvider(); // Act IPathItemHandler hander = provider.GetHandler(ODataPathKind.Unknown); // Assert Assert.Null(hander); }
public void GetHandlerReturnsCorrectHandlerType(ODataPathKind pathKind, Type handlerType) { // Arrange PathItemHandlerProvider provider = new PathItemHandlerProvider(); // Act IPathItemHandler hander = provider.GetHandler(pathKind); // Assert Assert.Same(handlerType, hander.GetType()); }
/// <summary> /// Create a map of <see cref="OpenApiPathItem"/>. /// </summary> /// <param name="context">The OData context.</param> /// <returns>The created map of <see cref="OpenApiPathItem"/>.</returns> public static IDictionary <string, OpenApiPathItem> CreatePathItems(this ODataContext context) { Utils.CheckArgumentNull(context, nameof(context)); IDictionary <string, OpenApiPathItem> pathItems = new Dictionary <string, OpenApiPathItem>(); if (context.EntityContainer == null) { return(pathItems); } OpenApiConvertSettings settings = context.Settings.Clone(); settings.EnableKeyAsSegment = context.KeyAsSegment; foreach (ODataPath path in context.AllPaths) { IPathItemHandler handler = context.PathItemHanderProvider.GetHandler(path.Kind); if (handler == null) { continue; } // Assign key index to each key in the path int keyCounter = 0; foreach (var segment in path.Segments) { if (segment.Kind == ODataSegmentKind.Key && (settings.EnableKeyAsSegment == null || !settings.EnableKeyAsSegment.Value)) { segment.KeyIndex = keyCounter++; } } pathItems.Add(path.GetPathItemName(settings), handler.CreatePathItem(context, path)); } return(pathItems); }