public static void Registration(UserRegistrationModel model, IAmItRequestListener listener)
        {
            bool      isConnected = true;
            WebClient Client      = new WebClient();
            String    Response;

            try
            {
                Response = Client.DownloadString("http://www.google.com");
            } catch (WebException e)
            {
                isConnected = false;
                listener.OnFail("Error. Check up you internet connection");
            }
            if (isConnected)
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(SERVER_ADDRESS + IAmItServerMethods.REGISTRATION);

                var data = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(model));

                request.Method        = "POST";
                request.ContentType   = "application/json";
                request.ContentLength = data.Length;

                using (var stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
                try
                {
                    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                    {
                        if (response.StatusCode.Equals(HttpStatusCode.OK))
                        {
                            PlayerPrefs.DeleteKey("Token");
                            Synchronizer.IsUsed = false;
                            listener.OnPost(new StreamReader(response.GetResponseStream()).ReadToEnd());
                        }
                    }
                }
                catch (WebException e)
                {
                    using (HttpWebResponse response = (HttpWebResponse)e.Response)
                    {
                        HttpWebResponse httpResponse = (HttpWebResponse)response;
                        using (Stream data1 = response.GetResponseStream())
                            using (var reader = new StreamReader(data1))
                            {
                                string text = reader.ReadToEnd();
                                listener.OnFail(text);
                            }
                    }
                }
            }
        }
        public static void Post <T> (T model, string method, IAmItRequestListener listener)
        {
            bool      isConnected = true;
            WebClient Client      = new WebClient();
            String    Response;

            try
            {
                Response = Client.DownloadString("http://www.google.com");
            }
            catch (WebException e)
            {
                isConnected = false;
                listener.OnFail("Error. Check up you internet connection");
            }
            if (isConnected)
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(SERVER_ADDRESS + method);

                var data = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(model));

                request.Method = "POST";
                request.Headers.Add(HttpRequestHeader.Cookie, ".AspNet.ApplicationCookie=" + Token);
                request.ContentType   = "application/json";
                request.ContentLength = data.Length;

                using (var stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }

                HttpWebResponse response = null;
                try
                {
                    response = (HttpWebResponse)request.GetResponse();
                } catch (WebException ex)
                {
                    response = (HttpWebResponse)ex.Response;
                    Debug.Log(ex.Message);
                }
                if (response.StatusCode.Equals(HttpStatusCode.OK))
                {
                    listener.OnPost(new StreamReader(response.GetResponseStream()).ReadToEnd());
                }
                else
                {
                    listener.OnFail(response.StatusCode.ToString());
                }
            }
        }
        public static void Get <T>(string method, IAmItRequestListener listener)
        {
            bool      isConnected = true;
            WebClient Client      = new WebClient();
            String    Response;

            try
            {
                Response = Client.DownloadString("http://www.google.com");
            }
            catch (WebException e)
            {
                isConnected = false;
                listener.OnFail("Error. Check up you internet connection");
            }
            if (isConnected)
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(SERVER_ADDRESS + method);
                request.Method = "GET";
                request.Headers.Add(HttpRequestHeader.Cookie, ".AspNet.ApplicationCookie=" + Token);
                HttpWebResponse response = null;
                try
                {
                    response = (HttpWebResponse)request.GetResponse();
                }
                catch (WebException ex)
                {
                    response = (HttpWebResponse)ex.Response;
                    Debug.Log(ex.Message);
                }
                string s2 = new StreamReader(response.GetResponseStream()).ReadToEnd();
                Debug.Log(response.StatusCode + ": " + s2);
                if (response.StatusCode.Equals(HttpStatusCode.OK))
                {
                    string s = new StreamReader(response.GetResponseStream()).ReadToEnd();
                    Debug.Log(s);
                    T outputModel = JsonConvert.DeserializeObject <T>(s);
                    Debug.Log(JsonConvert.SerializeObject(outputModel));
                    listener.OnGet(outputModel);
                }
                else
                {
                    listener.OnFail(response.StatusCode.ToString());
                }
            }
        }
        public static void Login(UserLoginModel model, IAmItRequestListener listener)
        {
            bool      isConnected = true;
            WebClient Client      = new WebClient();
            String    Response;

            try
            {
                Response = Client.DownloadString("http://www.google.com");
            }
            catch (WebException e)
            {
                isConnected = false;
                listener.OnFail("Error. Check up you internet connection");
            }
            if (isConnected)
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(SERVER_ADDRESS + IAmItServerMethods.LOGIN);

                var data = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(model));

                request.Method        = "POST";
                request.ContentType   = "application/json";
                request.ContentLength = data.Length;

                using (var stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }

                try
                {
                    using (HttpWebResponse response1 = (HttpWebResponse)request.GetResponse())
                    {
                        if (response1.StatusCode.Equals(HttpStatusCode.OK))
                        {
                            string cookies = response1.Headers.Get("Set-Cookie");
                            cookies.Trim();
                            for (int i = 40; i < cookies.Length; i++)
                            {
                                if (cookies.ElementAt(i) == ';')
                                {
                                    Token = cookies.Substring(26, i);
                                    break;
                                }
                            }

                            listener.OnLogin();
                        }
                    }
                }
                catch (WebException e)
                {
                    using (HttpWebResponse response1 = (HttpWebResponse)e.Response)
                    {
                        HttpWebResponse httpResponse = (HttpWebResponse)response1;
                        using (Stream data1 = response1.GetResponseStream())
                            using (var reader = new StreamReader(data1))
                            {
                                string text = reader.ReadToEnd();
                                listener.OnFail(text);
                            }
                    }
                }
            }
        }