Files
Partsource/PartSource/Filters/LocalizationAttribute.cs
2020-04-12 20:52:03 -04:00

31 lines
1.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
namespace PartSource.Filters
{
public class LocalizationAttribute : Attribute, IActionFilter, IFilter
{
public bool AllowMultiple
{
get
{
return false;
}
}
public async Task<HttpResponseMessage> ExecuteActionFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation)
{
foreach (StringWithQualityHeaderValue qualityHeaderValue in (IEnumerable<StringWithQualityHeaderValue>) ((IEnumerable<string>) actionContext.Request.Headers.AcceptLanguage.ToString().Split(',')).Select<string, StringWithQualityHeaderValue>(new Func<string, StringWithQualityHeaderValue>(StringWithQualityHeaderValue.Parse)).OrderByDescending<StringWithQualityHeaderValue, double>((Func<StringWithQualityHeaderValue, double>) (s => s.Quality.GetValueOrDefault(1.0))))
;
return await continuation();
}
}
}