ServiceStack.ContentFormat.GetRealContentType C# (CSharp) Méthode

GetRealContentType() public static méthode

public static GetRealContentType ( string contentType ) : string
contentType string
Résultat string
        public static string GetRealContentType(string contentType)
        {
            return contentType?.Split(';')[0].ToLower().Trim();
        }

Usage Example

        public static string GetResponseContentType(this IRequest httpReq)
        {
            var specifiedContentType = GetQueryStringContentType(httpReq);

            if (!IsNullOrEmpty(specifiedContentType))
            {
                return(specifiedContentType);
            }

            var acceptContentTypes = httpReq.AcceptTypes;
            var defaultContentType = httpReq.ContentType;

            if (httpReq.HasAnyOfContentTypes(MimeTypes.FormUrlEncoded, MimeTypes.MultiPartFormData))
            {
                defaultContentType = HostContext.Config.DefaultContentType;
            }

            var customContentTypes    = HostContext.ContentTypes.ContentTypeFormats.Values;
            var preferredContentTypes = HostContext.Config.PreferredContentTypesArray;

            var acceptsAnything       = false;
            var hasDefaultContentType = !IsNullOrEmpty(defaultContentType);

            if (acceptContentTypes != null)
            {
                var hasPreferredContentTypes = new bool[preferredContentTypes.Length];
                foreach (var acceptsType in acceptContentTypes)
                {
                    var contentType = ContentFormat.GetRealContentType(acceptsType);
                    acceptsAnything = acceptsAnything || contentType == "*/*";

                    for (var i = 0; i < preferredContentTypes.Length; i++)
                    {
                        if (hasPreferredContentTypes[i])
                        {
                            continue;
                        }
                        var preferredContentType = preferredContentTypes[i];
                        hasPreferredContentTypes[i] = contentType.StartsWith(preferredContentType);

                        //Prefer Request.ContentType if it is also a preferredContentType
                        if (hasPreferredContentTypes[i] && preferredContentType == defaultContentType)
                        {
                            return(preferredContentType);
                        }
                    }
                }

                for (var i = 0; i < preferredContentTypes.Length; i++)
                {
                    if (hasPreferredContentTypes[i])
                    {
                        return(preferredContentTypes[i]);
                    }
                }

                if (acceptsAnything)
                {
                    if (hasDefaultContentType)
                    {
                        return(defaultContentType);
                    }
                    if (HostContext.Config.DefaultContentType != null)
                    {
                        return(HostContext.Config.DefaultContentType);
                    }
                }

                foreach (var contentType in acceptContentTypes)
                {
                    foreach (var customContentType in customContentTypes)
                    {
                        if (contentType.StartsWith(customContentType, StringComparison.OrdinalIgnoreCase))
                        {
                            return(customContentType);
                        }
                    }
                }
            }

            if (httpReq.ContentType.MatchesContentType(MimeTypes.Soap12))
            {
                return(MimeTypes.Soap12);
            }

            if (acceptContentTypes == null && httpReq.ContentType == MimeTypes.Soap11)
            {
                return(MimeTypes.Soap11);
            }

            //We could also send a '406 Not Acceptable', but this is allowed also
            return(HostContext.Config.DefaultContentType);
        }