/// <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); } } }
/// <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); }