using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Security.Cryptography; using System.Text; namespace FNZCM.ConHost { internal static class ExtensionMethods { public static void WriteTextUtf8(this HttpListenerContext context, string content, string contentType = Const.TextHtml) { var bytes = Encoding.UTF8.GetBytes(content); context.Response.ContentEncoding = Encoding.UTF8; context.Response.ContentType = contentType; if (true == context.Request.Headers["Accept-Encoding"]?.Contains("gzip")) { context.Response.AddHeader("Content-Encoding", "gzip"); var memoryStream = new MemoryStream(bytes); var gZipStream = new GZipStream(context.Response.OutputStream, CompressionMode.Compress, false); memoryStream.CopyTo(gZipStream); gZipStream.Flush(); } else { context.Response.OutputStream.Write(bytes); } } public static string ToMd5(this string s) { var bytes = Encoding.UTF8.GetBytes(s); var md5 = MD5.Create(); var hash = md5.ComputeHash(bytes); var hex = string.Join("", hash.Select(p => p.ToString("x2"))); return hex; } } }