/// <summary>
        /// Sends a recovery request to our account server
        /// </summary>
        public static Status.RecoverStatusCode RecoverAccount(Status.RecoverRequestObject requestModel, string RequestUrl, out string payload)
        {
            payload = null;
            if (requestModel == null)
            {
                throw new ArgumentNullException("requestModel");
            }

            byte[]         bytes          = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(requestModel));
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(RequestUrl);

            httpWebRequest.Method        = "POST";
            httpWebRequest.ContentType   = "application/json";
            httpWebRequest.ContentLength = bytes.Length;
            try
            {
                httpWebRequest.GetRequestStream().Write(bytes, 0, bytes.Length);
            }
            catch (WebException)
            { return(Status.RecoverStatusCode.ServerError); }

            try
            {
                using (StreamReader streamReader = new StreamReader(httpWebRequest.GetResponse().GetResponseStream()))
                {
                    payload = streamReader.ReadToEnd();
                    return(Status.RecoverStatusCode.Ok);
                }
            }
            catch (WebException ex)
            {
                if ((HttpWebResponse)ex.Response == null)
                {
                    return(Status.RecoverStatusCode.NoResponse);
                }

                switch (((HttpWebResponse)ex.Response).StatusCode)
                {
                case HttpStatusCode.BadRequest:
                    Reason = ((HttpWebResponse)ex.Response).StatusDescription;
                    return(Status.RecoverStatusCode.MalformedData);

                case HttpStatusCode.NotFound:
                    Reason = ((HttpWebResponse)ex.Response).StatusDescription;
                    return(Status.RecoverStatusCode.InvalidCredentials);

                case HttpStatusCode.InternalServerError:
                    Reason = ((HttpWebResponse)ex.Response).StatusDescription;
                    return(Status.RecoverStatusCode.ServerError);

                default:
                    return(Status.RecoverStatusCode.ServerError);
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Sends a recovery request to the server
        /// </summary>
        public static bool RecoveryRequest(string Username, string Email, bool Reset)
        {
            string url = CurrentUrl + @"/recover";
            string payload;

            Status.RecoverRequestObject request = new Status.RecoverRequestObject();
            request.Username = Username;
            request.Email    = Email;
            request.Reset    = Reset;

            string msg;

            switch (AccountServer.RecoverAccount(request, url, out payload))
            {
            case Status.RecoverStatusCode.Ok:
                MessageBox.Show("Recovery Successful!\n\rCheck your email at " + payload, "Recovery Request");
                return(true);

            case Status.RecoverStatusCode.InvalidCredentials:
                msg = "Error: Invalid username/email";
                MessageBox.Show(string.IsNullOrWhiteSpace(AccountServer.Reason) ? msg : "Error: " + AccountServer.Reason, "Recovery Request");
                break;

            case Status.RecoverStatusCode.MalformedData:
                msg = "Error: malformed username/email";
                MessageBox.Show(string.IsNullOrWhiteSpace(AccountServer.Reason) ? msg : "Error: " + AccountServer.Reason, "Recovery Request");
                break;

            case Status.RecoverStatusCode.ServerError:
                msg = "Server error, could not connect.\r\n Is your firewall enabled?";
                MessageBox.Show(string.IsNullOrWhiteSpace(AccountServer.Reason) ? msg : "Error: " + AccountServer.Reason, "Recovery Request");
                break;

            case Status.RecoverStatusCode.NoResponse:
                msg = "Server error, received no response from the server.";
                MessageBox.Show(string.IsNullOrWhiteSpace(AccountServer.Reason) ? msg : "Error: " + AccountServer.Reason, "Recovery Request");
                break;
            }

            return(false);
        }