private ODataPathKind CalcPathType()

in src/Microsoft.OpenApi.OData.Reader/Edm/ODataPath.cs [286:341]


        private ODataPathKind CalcPathType()
        {
            if (Segments.Count == 1 && Segments.First().Kind == ODataSegmentKind.Metadata)
            {
                return ODataPathKind.Metadata;
            }
            else if (Segments.Last().Kind == ODataSegmentKind.DollarCount)
            {
                return ODataPathKind.DollarCount;
            }
            else if (Segments.Last().Kind == ODataSegmentKind.TypeCast)
            {
                return ODataPathKind.TypeCast;
            }
            else if (Segments.Last().Kind == ODataSegmentKind.ComplexProperty)
            {
                return ODataPathKind.ComplexProperty;
            }
            else if (Segments.Any(c => c.Kind == ODataSegmentKind.StreamProperty || c.Kind == ODataSegmentKind.StreamContent))
            {
                return ODataPathKind.MediaEntity;
            }
            else if (Segments.Any(c => c.Kind == ODataSegmentKind.Ref))
            {
                return ODataPathKind.Ref;
            }
            else if (Segments.Any(c => c.Kind == ODataSegmentKind.OperationImport))
            {
                return ODataPathKind.OperationImport;
            }
            else if (Segments.Any(c => c.Kind == ODataSegmentKind.Operation))
            {
                return ODataPathKind.Operation;
            }
            else if (Segments.Any(c => c.Kind == ODataSegmentKind.NavigationProperty))
            {
                return ODataPathKind.NavigationProperty;
            }
            else if (Segments.Count == 1 && Segments[0] is ODataNavigationSourceSegment segment)
            {
                if (segment.NavigationSource is IEdmSingleton)
                {
                    return ODataPathKind.Singleton;
                }
                else
                {
                    return ODataPathKind.EntitySet;
                }
            }
            else if (Segments.Count == 2 && Segments.Last().Kind == ODataSegmentKind.Key)
            {
                return ODataPathKind.Entity;
            }

            return ODataPathKind.Unknown;
        }