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());
            }
    }
Exemple #2
0
        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);
                }
            }
        }
Exemple #3
0
        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);
                    }
                }
            }
        }