private async Task ParseToNetResponse(NetResponse netResponse, HttpResponseMessage response) { using (response) { netResponse.IsSuccessful = response.IsSuccessStatusCode; netResponse.ContentEncoding = string.Join(",", response.Content.Headers.ContentEncoding); netResponse.ContentType = response.Content.Headers.ContentType?.MediaType; netResponse.ContentLength = response.Content.Headers.ContentLength; netResponse.ResponseUri = response.RequestMessage.RequestUri; var cookies = response.Headers?.Where(m => m.Key.ToLower() == "set-cookie"); if (cookies != null && cookies.Any()) { var items = new List <string>(); foreach (var item in cookies) { items.AddRange(item.Value.Select(m => m.Split(';')[0])); } netResponse.CookieAppend = string.Join(";", items); } if (response.Content.Headers.ContentEncoding.Any(m => m == "gzip")) { using (var stream = await response.Content.ReadAsStreamAsync()) using (var decompressed = new GZipStream(stream, CompressionMode.Decompress)) { netResponse.RawBytes = await decompressed.AsBytes(); } } else { netResponse.RawBytes = await response.Content.ReadAsByteArrayAsync(); } } }