using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Net; using System.Text; using Netch.Forms; using Netch.Properties; namespace Netch.Utils.HttpProxyHandler { /// /// 提供PAC功能支持 /// class PACUtil { private static readonly IEnumerable IgnoredLineBegins = new[] {'!', '['}; public static List ParseResult(string response) { byte[] bytes = Convert.FromBase64String(response); string content = Encoding.ASCII.GetString(bytes); List valid_lines = new List(); using (var sr = new StringReader(content)) { foreach (var line in sr.NonWhiteSpaceLines()) { if (line.BeginWithAny(IgnoredLineBegins)) continue; valid_lines.Add(line); } } return valid_lines; } public static string UnGzip(byte[] buf) { byte[] buffer = new byte[1024]; int n; using (MemoryStream sb = new MemoryStream()) { using (GZipStream input = new GZipStream(new MemoryStream(buf), CompressionMode.Decompress, false)) { while ((n = input.Read(buffer, 0, buffer.Length)) > 0) { sb.Write(buffer, 0, n); } } return System.Text.Encoding.UTF8.GetString(sb.ToArray()); } } } }