Esempio n. 1
0
        private void UploadThread(object param)
        {
            var parms = (object[]) param;
            var error = (ErrorReturn) parms[3];

            error.Code = ErrorCodes.Succeeded;
            error.Exception = null;
            error.ReportedError = null;

            try
            {
                CookieAwareWebClient client = new CookieAwareWebClient();
                var text = client.DownloadString("http://minecraft.net/login");

                Match match = Regex.Match(text, @"<input type=""hidden"" name=""authenticityToken"" value=""(.*?)"">");
                string authToken = null;
                if (match.Success)
                    authToken = match.Groups[1].Value;

                if (authToken == null)
                    return;

                var data = new NameValueCollection();
                data.Add("authenticityToken", authToken);
                data.Add("username", (string)parms[0]);
                data.Add("password", (string)parms[1]);
                data.Add("redirect", "/profile");

                var returnData = Encoding.UTF8.GetString(client.UploadValues("https://minecraft.net/login", data));

                match = Regex.Match(returnData, @"<p class=""error"">([\w\W]*?)</p>");

                if (match.Success)
                {
                    error.ReportedError = match.Groups[1].Value.Trim();
                    error.Code = ErrorCodes.WrongCredentials;
                }
                else
                {
                    var dict = new Dictionary<string, string>();
                    dict.Add("authenticityToken", authToken);
                    if ((error.Exception = client.UploadFileEx("http://minecraft.net/profile/skin", parms[2].ToString(), "skin", "image/png", dict)) != null)
                        error.Code = ErrorCodes.Unknown;
                }
            }
            catch (Exception ex)
            {
                error.Exception = ex;
            }
            finally
            {
                Invoke(delegate { _pleaseWaitForm.Close(); });
            }
        }