/// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        public void GetHandlerReturnsNullForUnknownPathKind()
        {
            // Arrange
            PathItemHandlerProvider provider = new PathItemHandlerProvider();

            // Act
            IPathItemHandler hander = provider.GetHandler(ODataPathKind.Unknown);

            // Assert
            Assert.Null(hander);
        }
示例#5
0
        public void GetHandlerReturnsCorrectHandlerType(ODataPathKind pathKind, Type handlerType)
        {
            // Arrange
            PathItemHandlerProvider provider = new PathItemHandlerProvider();

            // Act
            IPathItemHandler hander = provider.GetHandler(pathKind);

            // Assert
            Assert.Same(handlerType, hander.GetType());
        }
示例#6
0
        /// <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);
        }