public DoNext Filter(ServiceArguments arguments) { if (arguments.Has(typeof(Latch))) { return(DoNext.Stop); } var request = arguments.Get <IHttpRequest>(); if (!request.HasHeader(HttpRequestHeaders.AcceptEncoding)) { return(DoNext.Continue); } var acceptEncoding = request .GetSingleHeader(HttpRequestHeaders.AcceptEncoding); var encoding = _encoders.MatchFor(acceptEncoding); var writer = arguments.Get <IHttpResponse>(); writer.AppendHeader(HttpRequestHeaders.ContentEncoding, encoding.MatchingEncoding.Value); writer.UseEncoding(encoding); arguments.Set(typeof(Latch), new Latch()); return(DoNext.Continue); }
public DoNext Filter(ServiceArguments arguments) { arguments .Get <IRequestData>() .ValuesFor(RequestDataSource.Header) .Value(HttpRequestHeaders.AcceptEncoding, x => { var encoding = _encoders.MatchFor(x.RawValue as string); var writer = arguments.Get <IHttpWriter>(); writer.AppendHeader(HttpRequestHeaders.ContentEncoding, encoding.MatchingEncoding.Value); writer.UseEncoding(encoding); }); return(DoNext.Continue); }