encode/csharp/core/Encoder.cs (84 lines of code) (raw):

/** * Encode Util for Darabonba. */ // This file is auto-generated, don't edit it. Thanks. using System; using System.Collections; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Web; namespace AlibabaCloud.DarabonbaEncodeUtil { public class Encoder { /** * Encode the URL * @param url string * @return encoded string */ public static string UrlEncode(string url) { return HttpUtility.UrlEncode(url); } /** * Special encoding for url params. * @param params string * @return encoded string */ public static string PercentEncode(string raw) { if (raw == null) { return null; } var stringBuilder = new StringBuilder(); var text = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~"; var bytes = Encoding.UTF8.GetBytes(raw); foreach (char c in bytes) { if (text.IndexOf(c) >= 0) { stringBuilder.Append(c); } else { stringBuilder.Append("%").Append(string.Format(CultureInfo.InvariantCulture, "{0:X2}", (int)c)); } } return stringBuilder.ToString().Replace("+", "%20") .Replace("*", "%2A").Replace("%7E", "~"); } /** * Encode the partial path of url. * @param path string * @return encoded string */ public static string PathEncode(string path) { List<string> encodeStr = new List<string>(); string[] strSplit = path.Split('/'); foreach (string str in strSplit) { encodeStr.Add(PercentEncode(str)); } return string.Join("/", encodeStr); } /** * Hex encode for byte array. * @param raw byte array * @return encoded string */ public static string HexEncode(byte[] raw) { if (raw == null) { return string.Empty; } StringBuilder result = new StringBuilder(raw.Length * 2); for (int i = 0; i < raw.Length; i++) result.Append(raw[i].ToString("x2")); return result.ToString(); } /** * Hash the raw data with signatureAlgorithm. * @param raw hashing data * @param signatureAlgorithm the autograph method * @return hashed bytes */ public static byte[] Hash(byte[] raw, string signatureAlgorithm) { if (signatureAlgorithm.Contains("HMAC-SHA256") || signatureAlgorithm.Contains("RSA-SHA256")) { byte[] signData; using (SHA256 sha256 = new SHA256Managed()) { signData = sha256.ComputeHash(raw); } return signData; } return null; } /** * Base64 encoder for byte array. * @param raw byte array * @return encoded string */ public static string Base64EncodeToString(byte[] raw) { return Convert.ToBase64String(raw); } /** * Base64 dncoder for string. * @param src string * @return dncoded byte array */ public static byte[] Base64Decode(string src) { return Convert.FromBase64String(src); } } }