LightNode.Server.OperationHandler.SelectAcceptEncodingFormatter C# (CSharp) Method

SelectAcceptEncodingFormatter() static private method

static private SelectAcceptEncodingFormatter ( IHeaderDictionary requestHeader, ICollection selectedFormatters ) : IContentFormatter
requestHeader IHeaderDictionary
selectedFormatters ICollection
return IContentFormatter
        static IContentFormatter SelectAcceptEncodingFormatter(IHeaderDictionary requestHeader, ICollection<IContentFormatter> selectedFormatters)
        {
            if (selectedFormatters.Count == 1) return selectedFormatters.First();

            StringValues rawAcceptEncoding;
            if (!requestHeader.TryGetValue("Accept-Encoding", out rawAcceptEncoding))
            {
                return selectedFormatters.First();
            }

            var acceptEncodings = GetDescendingQualityHeaderValues(rawAcceptEncoding);
            var formatter = acceptEncodings
                .Select(kvp => selectedFormatters.FirstOrDefault(x => kvp.Item3.Equals(x.ContentEncoding, StringComparison.OrdinalIgnoreCase)))
                .FirstOrDefault(x => x != null);

            if (formatter == null) return selectedFormatters.First();
            return formatter;
        }