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;
}