protected string GetPageId(Uri url, HttpContentHeaders headers = null) { //Example: Link:</node/6>; rel="shortlink",</home>; rel="canonical" var linkHead = ""; if (headers.TryGetValues("Link", out IEnumerable <string> result)) { linkHead = result.FirstOrDefault(); } if (string.IsNullOrEmpty(linkHead)) { return(url.ToString()); } var tokens = linkHead.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); foreach (var token in tokens) { var subTokens = token.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries); if (subTokens.Length != 2) { continue; } if (subTokens[1].Contains("canonical")) { return(subTokens[0].Trim('<', '>')); } } return(url.ToString()); }
public void EnsureResponseMessagePublished() { // If the response message hasn't been published yet, do any final processing of it before it is. if (!Task.IsCompleted) { // On Windows, if the response was automatically decompressed, Content-Encoding and Content-Length // headers are removed from the response. Do the same thing here. DecompressionMethods dm = _handler.AutomaticDecompression; if (dm != DecompressionMethods.None) { HttpContentHeaders contentHeaders = _responseMessage.Content.Headers; IEnumerable <string> encodings; if (contentHeaders.TryGetValues(HttpKnownHeaderNames.ContentEncoding, out encodings)) { foreach (string encoding in encodings) { if (((dm & DecompressionMethods.GZip) != 0 && string.Equals(encoding, EncodingNameGzip, StringComparison.OrdinalIgnoreCase)) || ((dm & DecompressionMethods.Deflate) != 0 && string.Equals(encoding, EncodingNameDeflate, StringComparison.OrdinalIgnoreCase))) { contentHeaders.Remove(HttpKnownHeaderNames.ContentEncoding); contentHeaders.Remove(HttpKnownHeaderNames.ContentLength); break; } } } } } // Now ensure it's published. bool result = TrySetResult(_responseMessage); Debug.Assert(result || Task.Status == TaskStatus.RanToCompletion, "If the task was already completed, it should have been completed successfully; " + "we shouldn't be completing as successful after already completing as failed."); }
private static bool IsContentHeaderSet(HttpContentHeaders headers, string name, string value) { if (!headers.TryGetValues(name, out var actualValues)) { return(false); } return(actualValues.Contains(value)); }
private static bool IsContentTypeHeaderSet(HttpContentHeaders headers, string value) { if (!headers.TryGetValues("Content-Type", out var values)) { return(false); } return(values.Contains(value)); }
private MediaTypeHeaderValue GetContentType() { if (Headers.TryGetValues("Content-Type", out IEnumerable <string> values)) { return(ParseContentType(values.FirstOrDefault())); } throw new JsonModelReaderException("Content-Type header was not found"); }
public static string GetDataServiceVersion(HttpContentHeaders headers) { string dataServiceVersion = null; IEnumerable <string> values; if (headers.TryGetValues("OData-Version", out values)) { dataServiceVersion = values.FirstOrDefault(); } return(dataServiceVersion); }
public string GetHeader(HttpContentHeaders headers, string name) { IEnumerable <string> values; if (headers.TryGetValues(name, out values)) { return(values.First()); } return(null); }
/// <summary> /// Returns an individual HTTP Header value /// </summary> /// <param name="request"></param> /// <param name="key"></param> /// <returns></returns> public static string GetHeader(this HttpContentHeaders headers, string key) { IEnumerable <string> keys = null; if (!headers.TryGetValues(key, out keys)) { return(null); } return(keys.First()); }
public static bool IsJsonResponse(HttpContentHeaders headers) { string value = string.Empty; if (headers.TryGetValues("Content-Type", out IEnumerable <string> values)) { value = values.First(); } return(value.Contains("application/json")); }
internal static NotRegisteredUser FromRequest(HttpContentHeaders headers) { IEnumerable <string> auth; if (headers.TryGetValues("Authorization", out auth)) { return(FromBasicAuthToken(auth.FirstOrDefault())); } return(null); }
public static bool TryGetValue(this HttpContentHeaders http, string name, out string value) { if (http.TryGetValues(name, out IEnumerable <string> values)) { value = values.ElementAt(0); return(true); } value = null; return(false); }
/// <summary> /// Extract <see cref="ContentType"/> using /// <see cref="HeaderNames.ContentType"/> header. /// If any. /// </summary> public static ContentType GetContentType(this HttpContentHeaders httpContentHeaders) { _ = httpContentHeaders ?? throw new ArgumentNullException(nameof(httpContentHeaders)); if (!httpContentHeaders.TryGetValues(HeaderNames.ContentType, out var contentTypes)) { return(null); } var contentTypeAsString = contentTypes.FirstOrDefault() ?? string.Empty; return(new ContentType(contentTypeAsString)); }
protected virtual string GetCharsetFromHeaders(HttpContentHeaders headers) { string charset = null; if (headers.TryGetValues("content-type", out var ctypes)) { var ctype = ctypes.ElementAt(0); var ind = ctype.IndexOf("charset=", StringComparison.CurrentCultureIgnoreCase); if (ind != -1) { charset = ctype.Substring(ind + 8); } } return(charset); }
public static string GetHeaderValue(this HttpContentHeaders contentHeaders, string headerType) { if (contentHeaders != null && contentHeaders.TryGetValues(headerType, out var dataList)) { if (dataList == null || dataList.Count() == 0) { return(""); } var data = dataList.FirstOrDefault(); return(data ?? ""); } return(""); }
private byte[] DecompressBody(MemoryStream incomingBody, HttpContentHeaders headers) { if (headers.TryGetValues("Content-Encoding", out var values)) { if (values.Contains("gzip")) { using (var uncompressedStream = new GZipStream(incomingBody, CompressionMode.Decompress)) using (var resultStream = new MemoryStream()) { uncompressedStream.CopyTo(resultStream); return(resultStream.ToArray()); } } } return(incomingBody.ToArray()); }
public void EnsureResponseMessagePublished() { // If the response message hasn't been published yet, do any final processing of it before it is. if (!Task.IsCompleted) { EventSourceTrace("Publishing response message"); // On Windows, if the response was automatically decompressed, Content-Encoding and Content-Length // headers are removed from the response. Do the same thing here. DecompressionMethods dm = _handler.AutomaticDecompression; if (dm != DecompressionMethods.None) { HttpContentHeaders contentHeaders = _responseMessage.Content.Headers; IEnumerable <string> encodings; if (contentHeaders.TryGetValues(HttpKnownHeaderNames.ContentEncoding, out encodings)) { foreach (string encoding in encodings) { if (((dm & DecompressionMethods.GZip) != 0 && string.Equals(encoding, EncodingNameGzip, StringComparison.OrdinalIgnoreCase)) || ((dm & DecompressionMethods.Deflate) != 0 && string.Equals(encoding, EncodingNameDeflate, StringComparison.OrdinalIgnoreCase))) { contentHeaders.Remove(HttpKnownHeaderNames.ContentEncoding); contentHeaders.Remove(HttpKnownHeaderNames.ContentLength); break; } } } } } // Now ensure it's published. bool completedTask = TrySetResult(_responseMessage); Debug.Assert(completedTask || Task.IsCompletedSuccessfully, "If the task was already completed, it should have been completed successfully; " + "we shouldn't be completing as successful after already completing as failed."); // If we successfully transitioned it to be completed, we also handed off lifetime ownership // of the response to the owner of the task. Transition our reference on the EasyRequest // to be weak instead of strong, so that we don't forcibly keep it alive. if (completedTask) { Debug.Assert(_selfStrongToWeakReference != null, "Expected non-null wrapper"); _selfStrongToWeakReference.MakeWeak(); } }
static string GetKey(HttpContentHeaders headers) { if (headers == null) { throw new ArgumentNullException("headers"); } // N.B. Mono 3.8.0 and earlier do not correctly support // the headers.ContentDisposition property, so we // access the underlying string value instead. IEnumerable <string> values; if (!headers.TryGetValues("Content-Disposition", out values)) { throw new ArgumentException("headers.ContentDisposition must not be null."); } return(values.First()); }
public static string?TryGetValue(this HttpContentHeaders headers, string name) => headers.TryGetValues(name, out var values) ? string.Concat(values) : null;