protected override async System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { try { HttpResponseMessage response = await base.SendAsync(request, cancellationToken); if (flipConnections.Contains(request.GetClientIp()) || bwConnections.Contains(request.GetClientIp())) { System.Drawing.Imaging.ImageFormat fmt; MediaTypeHeaderValue mediatype = response.Content.Headers.ContentType; if (response.IsSuccessStatusCode && ImageFormat(mediatype, out fmt)) { var streamin = await response.Content.ReadAsStreamAsync(); using (Bitmap bmp = new Bitmap(Image.FromStream(streamin))) { if(flipConnections.Contains(request.GetClientIp())) bmp.RotateFlip(RotateFlipType.RotateNoneFlipXY); if(bwConnections.Contains(request.GetClientIp())) MakeBW(bmp); var msout = new MemoryStream(); bmp.Save(msout, fmt); msout.Position=0; response.Content = new StreamContent(msout); response.Content.Headers.ContentType = mediatype; } } } return response; } catch (Exception ex) { var response = request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex); return response; } }
private static async System.Threading.Tasks.Task LogResponse(HttpRequestMessage request, HttpResponseMessage response, Stopwatch stopwatch) { string connection; if (connections.TryGetValue(request.GetClientIp(), out connection)) { var loggingHubContext = GlobalHost.ConnectionManager.GetHubContext<LoggingHub>(); await loggingHubContext.Clients.Client(connection).LogUrl(request.RequestUri.ToString()); } }
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { request.Headers.Add("X-Forwarded-For", request.GetClientIp()); if (request.Method == HttpMethod.Get || request.Method == HttpMethod.Trace) request.Content = null; request.RequestUri = new Uri(request.RequestUri.ToString().Replace(":3002", "")); //comes through with the port for the proxy, rewrite to port 80 request.Headers.AcceptEncoding.Clear(); var responseMessage = await new HttpClient().SendAsync(request, HttpCompletionOption.ResponseHeadersRead); responseMessage.Headers.TransferEncodingChunked = null; //throws an error on calls to WebApi results if (request.Method == HttpMethod.Head) responseMessage.Content = null; return responseMessage; }
private void AddProxyRequestHeader(HttpRequestMessage request) { //do the proxy forward header thang request.Headers.Add("X-Forwarded-For", request.GetClientIp()); }