ServiceStack.MetadataFeature.GetHandlerForPathParts C# (CSharp) Метод

GetHandlerForPathParts() приватный Метод

private GetHandlerForPathParts ( string pathParts ) : IHttpHandler
pathParts string
Результат IHttpHandler
        private IHttpHandler GetHandlerForPathParts(string[] pathParts)
        {
            var pathController = string.Intern(pathParts[0].ToLower());
            if (pathParts.Length == 1)
            {
                if (pathController == "metadata")
                    return new IndexMetadataHandler();

                return null;
            }

            var pathAction = string.Intern(pathParts[1].ToLower());
            if (pathAction == "wsdl")
            {
                if (pathController == "soap11")
                    return new Soap11WsdlMetadataHandler();
                if (pathController == "soap12")
                    return new Soap12WsdlMetadataHandler();
            }

            if (pathAction != "metadata") return null;

            switch (pathController)
            {
                case "json":
                    return new JsonMetadataHandler();

                case "xml":
                    return new XmlMetadataHandler();

                case "jsv":
                    return new JsvMetadataHandler();

                case "soap11":
                    return new Soap11MetadataHandler();

                case "soap12":
                    return new Soap12MetadataHandler();

                case "types":
                    
                    if (HostContext.Config == null
                        || HostContext.Config.MetadataTypesConfig == null)
                        return null;

                    if (HostContext.Config.MetadataTypesConfig.BaseUrl == null)
                        HostContext.Config.MetadataTypesConfig.BaseUrl = HttpHandlerFactory.GetBaseUrl();

                    return new MetadataTypesHandler { Config = HostContext.Config.MetadataTypesConfig };

                case "operations":
                    
                    return new CustomResponseHandler((httpReq, httpRes) => 
                        HostContext.AppHost.HasAccessToMetadata(httpReq, httpRes) 
                            ? HostContext.Metadata.GetOperationDtos()
                            : null, "Operations");

                default:
                    string contentType;
                    if (HostContext.ContentTypes
                        .ContentTypeFormats.TryGetValue(pathController, out contentType))
                    {
                        var format = ContentFormat.GetContentFormat(contentType);
                        return new CustomMetadataHandler(contentType, format);
                    }
                    break;
            }
            return null;
        }
    }