using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Net.Http; using System.Text; using System.Web; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace Gestor.Application.Helpers; public static class HttpHelper { public static Uri AddQuery(this Uri uri, string name, T value) { UriBuilder uriBuilder = new UriBuilder(uri); NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(uri.Query); nameValueCollection.Add(name, value?.ToString()); uriBuilder.Query = nameValueCollection.ToString(); return uriBuilder.Uri; } public static Uri SetQuery(this Uri uri, string name, string value, bool escapeValue = true) { UriBuilder uriBuilder = new UriBuilder(uri); Dictionary dictionary = uri.ParseQueryString(); string value2 = (escapeValue ? Uri.EscapeDataString(value) : value); if (dictionary.ContainsKey(name)) { dictionary.Remove(name); } dictionary.Add(name, value2); List values = dictionary.Select((KeyValuePair x) => x.Key + "=" + x.Value).ToList(); string query = string.Join("&", values); uriBuilder.Query = query; return uriBuilder.Uri; } public static Dictionary ParseQueryString(this Uri uri) { int startIndex = uri.Query.IndexOf('?') + 1; return (from o in uri.Query.Substring(startIndex).Split(new char[1] { '&' }) select o.Split(new char[1] { '=' }) into items where items.Length == 2 select items).ToDictionary((string[] pair) => pair[0], (string[] pair) => pair[1]); } public static Uri ToUri(this string uri) { Uri.TryCreate(uri, UriKind.Absolute, out Uri result); return result; } public static StringContent ToHttpContent(this T content, Encoding encoding = null, string mediaType = "application/json") { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown return new StringContent(JsonConvert.SerializeObject((object)content), Encoding.UTF8, mediaType); } public static JObject ToJObject(this string jsonString) { try { return JObject.Parse(jsonString); } catch (Exception) { return null; } } public static JObject ToJObject(this HttpContent content) { return content.ReadAsStringAsync().Result.ToJObject(); } public static string ToBase64BasicEncode(this string value) { return "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(value)); } }