private HttpRequestMessage CreateRequest(string httpMethod, string absoluteUrl, object request) { this.PopulateRequestMetadata(request); var httpReq = new HttpRequestMessage(new HttpMethod(httpMethod), absoluteUrl); foreach (var name in Headers.AllKeys) { httpReq.Headers.Add(name, Headers[name]); } httpReq.Headers.Add(HttpHeaders.Accept, ContentType); if (HttpUtils.HasRequestBody(httpMethod) && request != null) { if (request is HttpContent httpContent) { httpReq.Content = httpContent; } else { if (request is string str) { httpReq.Content = new StringContent(str); } else if (request is byte[] bytes) { httpReq.Content = new ByteArrayContent(bytes); } else if (request is Stream stream) { httpReq.Content = new StreamContent(stream); } else { httpReq.Content = new StringContent(request.ToJson(), Encoding.UTF8, ContentType); } var compressor = StreamCompressors.Get(RequestCompressionType); if (compressor != null) { httpReq.Content = new CompressContent(httpReq.Content, compressor); } } } ApplyWebRequestFilters(httpReq); Interlocked.Increment(ref activeAsyncRequests); return(httpReq); }
public static Stream GetInputStream(this IRequest req, Stream stream) { var enc = req.GetContentEncoding(); var compressor = enc != null ? StreamCompressors.Get(enc) : null; if (compressor != null) { return(compressor.Decompress(stream)); } return(stream); }
public static IStreamCompressor GetCompressor(this IRequest request) { var encoding = request.GetCompressionType(); return(encoding != null?StreamCompressors.Get(encoding) : null); }