public static byte[] DeCompressScreenshot(byte[] screenshotCompressed) { using (var memoryStreamInput = new System.IO.MemoryStream(screenshotCompressed)) using (var memoryStreamOutput = new System.IO.MemoryStream()) { using (var gs = new Unity.IO.Compression.GZipStream(memoryStreamInput, Unity.IO.Compression.CompressionMode.Decompress)) { CopyTo(gs, memoryStreamOutput); } return(memoryStreamOutput.ToArray()); } }
public string ParseResponse(string token, ulong seq) { if (!IsDone) { return("Request undone."); } else { if (!string.IsNullOrEmpty(Error)) { return(Error); } else { string enc = ""; bool encrypted = false; string txt = ""; if (_RespHeaders != null) { foreach (var kvp in _RespHeaders.Data) { var lkey = kvp.Key.ToLower(); if (lkey == "content-encoding") { enc = kvp.Value.ToString().ToLower(); } else if (lkey == "encrypted") { var val = kvp.Value.ToString(); if (val != null) { val = val.ToLower(); } encrypted = !string.IsNullOrEmpty(val) && val != "n" && val != "0" && val != "f" && val != "no" && val != "false"; } } } bool zipHandledBySystem = false; if (enc != "gzip" || zipHandledBySystem) { try { txt = System.Text.Encoding.UTF8.GetString(_Resp, 0, _Resp.Length); if (encrypted) { var data = Convert.FromBase64String(txt); var decrypted = PlatExt.PlatDependant.DecryptPostData(data, token, seq); if (decrypted != null) { txt = System.Text.Encoding.UTF8.GetString(decrypted, 0, decrypted.Length); } } } catch { } } else { try { using (System.IO.MemoryStream ms = new System.IO.MemoryStream(_Resp, false)) { using (Unity.IO.Compression.GZipStream gs = new Unity.IO.Compression.GZipStream(ms, Unity.IO.Compression.CompressionMode.Decompress)) { using (var sr = new System.IO.StreamReader(gs)) { txt = sr.ReadToEnd(); } if (encrypted) { var data = Convert.FromBase64String(txt); var decrypted = PlatExt.PlatDependant.DecryptPostData(data, token, seq); if (decrypted != null) { txt = System.Text.Encoding.UTF8.GetString(decrypted, 0, decrypted.Length); } } } } } catch { } } return(txt); } } }
public static string ParseWWWResponse(this UnityEngine.WWW www, string token, ulong seq) { if (www == null) { return("Invalid request obj."); } else { if (!www.isDone) { return("Request undone."); } else { if (!string.IsNullOrEmpty(www.error)) { return(www.error); } else { string enc = ""; bool encrypted = false; string txt = ""; if (www.responseHeaders != null) { foreach (var kvp in www.responseHeaders) { var lkey = kvp.Key.ToLower(); if (lkey == "content-encoding") { enc = kvp.Value.ToLower(); } else if (lkey == "encrypted") { var val = kvp.Value; if (val != null) { val = val.ToLower(); } encrypted = !string.IsNullOrEmpty(val) && val != "n" && val != "0" && val != "f" && val != "no" && val != "false"; } } } bool zipHandledBySystem = false; #if !UNITY_EDITOR && UNITY_IPHONE zipHandledBySystem = true; #endif if (enc != "gzip" || zipHandledBySystem) { try { txt = www.text; if (encrypted) { var data = Convert.FromBase64String(txt); var decrypted = PlatExt.PlatDependant.DecryptPostData(data, token, seq); if (decrypted != null) { #if NETFX_CORE txt = System.Text.Encoding.UTF8.GetString(decrypted, 0, decrypted.Length); #else txt = System.Text.Encoding.UTF8.GetString(decrypted); #endif } } } catch { } } else { try { using (System.IO.MemoryStream ms = new System.IO.MemoryStream(www.bytes, false)) { using (Unity.IO.Compression.GZipStream gs = new Unity.IO.Compression.GZipStream(ms, Unity.IO.Compression.CompressionMode.Decompress)) { using (var sr = new System.IO.StreamReader(gs)) { txt = sr.ReadToEnd(); } if (encrypted) { var data = Convert.FromBase64String(txt); var decrypted = PlatExt.PlatDependant.DecryptPostData(data, token, seq); if (decrypted != null) { #if NETFX_CORE txt = System.Text.Encoding.UTF8.GetString(decrypted, 0, decrypted.Length); #else txt = System.Text.Encoding.UTF8.GetString(decrypted); #endif } } } } } catch { } } return(txt); } } } }