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 ExecuteActionFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func> continuation) { foreach (StringWithQualityHeaderValue qualityHeaderValue in (IEnumerable) ((IEnumerable) actionContext.Request.Headers.AcceptLanguage.ToString().Split(',')).Select(new Func(StringWithQualityHeaderValue.Parse)).OrderByDescending((Func) (s => s.Quality.GetValueOrDefault(1.0)))) ; return await continuation(); } } }