using System; using System.Collections; using System.Collections.Generic; using Newtonsoft.Json; namespace Alipay.AopSdk.Core.Util { /// /// AOP系统工具类。 /// public abstract class AopUtils { /// /// AES加密 /// /// /// /// /// public static string AesEncrypt(string encryptKey, string bizContent, string charset) { return AlipayEncrypt.AesEncrypt(encryptKey, bizContent, charset); } /// /// 给AOP请求签名。 /// 建议使用AlipaySignature.RSASign(parameters, privateKeyPem)> /// /// 所有字符型的AOP请求参数 /// 签名密钥 /// 签名 public static string SignAopRequest(IDictionary parameters, string privateKeyPem, string charset, string signType) { return AlipaySignature.RSASign(parameters, privateKeyPem, charset, signType); } public static string SignAopRequest(IDictionary parameters, string privateKeyPem, string charset, bool keyFromFile, string signType) { return AlipaySignature.RSASign(parameters, privateKeyPem, charset, keyFromFile, signType); } /// /// 清除字典中值为空的项。 /// /// 待清除的字典 /// 清除后的字典 public static IDictionary CleanupDictionary(IDictionary dict) { IDictionary newDict = new Dictionary(dict.Count); var dem = dict.GetEnumerator(); while (dem.MoveNext()) { var name = dem.Current.Key; var value = dem.Current.Value; if (value != null) newDict.Add(name, value); } return newDict; } /// /// 获取文件的真实后缀名。目前只支持JPG, GIF, PNG, BMP四种图片文件。 /// /// 文件字节流 /// JPG, GIF, PNG or null public static string GetFileSuffix(byte[] fileData) { if (fileData == null || fileData.Length < 10) return null; if (fileData[0] == 'G' && fileData[1] == 'I' && fileData[2] == 'F') return "GIF"; if (fileData[1] == 'P' && fileData[2] == 'N' && fileData[3] == 'G') return "PNG"; if (fileData[6] == 'J' && fileData[7] == 'F' && fileData[8] == 'I' && fileData[9] == 'F') return "JPG"; if (fileData[0] == 'B' && fileData[1] == 'M') return "BMP"; return null; } /// /// 获取文件的真实媒体类型。目前只支持JPG, GIF, PNG, BMP四种图片文件。 /// /// 文件字节流 /// 媒体类型 public static string GetMimeType(byte[] fileData) { var suffix = GetFileSuffix(fileData); string mimeType; switch (suffix) { case "JPG": mimeType = "image/jpeg"; break; case "GIF": mimeType = "image/gif"; break; case "PNG": mimeType = "image/png"; break; case "BMP": mimeType = "image/bmp"; break; default: mimeType = "application/octet-stream"; break; } return mimeType; } /// /// 根据文件后缀名获取文件的媒体类型。 /// /// 带后缀的文件名或文件全名 /// 媒体类型 public static string GetMimeType(string fileName) { string mimeType; fileName = fileName.ToLower(); if (fileName.EndsWith(".bmp", StringComparison.CurrentCulture)) mimeType = "image/bmp"; else if (fileName.EndsWith(".gif", StringComparison.CurrentCulture)) mimeType = "image/gif"; else if (fileName.EndsWith(".jpg", StringComparison.CurrentCulture) || fileName.EndsWith(".jpeg", StringComparison.CurrentCulture)) mimeType = "image/jpeg"; else if (fileName.EndsWith(".png", StringComparison.CurrentCulture)) mimeType = "image/png"; else mimeType = "application/octet-stream"; return mimeType; } /// /// 根据API名称获取响应根节点名称。 /// /// API名称 /// public static string GetRootElement(string api) { var pos = api.IndexOf("."); if (pos != -1 && api.Length > pos) api = api.Substring(pos + 1).Replace('.', '_'); return api + "_response"; } public static IDictionary ParseJson(string body) { return JsonConvert.DeserializeObject(body); } } }