/// <summary> /// Sends a login request to the server /// </summary> public static string[] LoginServer(string Username, string Password) { string url = CurrentUrl; Status.LoginResponseObject payload; Status.LoginRequestObject request = new Status.LoginRequestObject(); request.Username = Username; request.PasswordHash = Password; string msg; switch (AccountServer.LoginAccount(request, CurrentUrl, out payload)) { case Status.LoginStatusCode.Ok: string[] getPayload = { payload.TicketId.ToString(), payload.Username }; return(getPayload); case Status.LoginStatusCode.InvalidCredentials: msg = "Error: Invalid username/password"; MessageBox.Show(string.IsNullOrWhiteSpace(AccountServer.Reason) ? msg : "Error: " + AccountServer.Reason, "Login Request"); if (passwordCount++ >= 3) { if (ShowReminder != null) { ShowReminder(passwordCount); } } break; case Status.LoginStatusCode.MalformedData: msg = "Error: malformed username/password"; MessageBox.Show(string.IsNullOrWhiteSpace(AccountServer.Reason) ? msg : "Error: " + AccountServer.Reason, "Login Request"); if (passwordCount++ >= 3) { if (ShowReminder != null) { ShowReminder(passwordCount); } } break; case Status.LoginStatusCode.ServerError: msg = "Server error, could not connect.\r\n Is your firewall enabled?"; MessageBox.Show(string.IsNullOrWhiteSpace(AccountServer.Reason) ? msg : AccountServer.Reason, "Login Request"); break; case Status.LoginStatusCode.NoResponse: msg = "Server error, received no response from the server."; MessageBox.Show(string.IsNullOrWhiteSpace(AccountServer.Reason) ? msg : AccountServer.Reason, "Login Request"); break; } return(null); }
/// <summary> /// Sends a login request to our account server /// </summary> public static Status.LoginStatusCode LoginAccount(Status.LoginRequestObject requestModel, string LoginUrl, out Status.LoginResponseObject payload) { if (requestModel == null) { throw new ArgumentNullException("requestModel"); } byte[] bytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(requestModel)); HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(LoginUrl); httpWebRequest.Method = "POST"; httpWebRequest.ContentType = "application/json"; httpWebRequest.ContentLength = bytes.Length; try { httpWebRequest.GetRequestStream().Write(bytes, 0, bytes.Length); } catch (WebException) { payload = null; return(Status.LoginStatusCode.ServerError); } try { using (StreamReader streamReader = new StreamReader(httpWebRequest.GetResponse().GetResponseStream())) { string str = streamReader.ReadToEnd(); payload = JsonConvert.DeserializeObject <Status.LoginResponseObject>(str); if (string.IsNullOrWhiteSpace(payload.TicketId.ToString()) || string.IsNullOrWhiteSpace(payload.Username)) { payload = null; Reason = "Incorrect username or password."; return(Status.LoginStatusCode.MalformedData); } return(Status.LoginStatusCode.Ok); } } catch (WebException ex) { if ((HttpWebResponse)ex.Response == null) { payload = null; return(Status.LoginStatusCode.NoResponse); } switch (((HttpWebResponse)ex.Response).StatusCode) { case HttpStatusCode.BadRequest: payload = null; Reason = ((HttpWebResponse)ex.Response).StatusDescription; return(Status.LoginStatusCode.MalformedData); case HttpStatusCode.NotFound: payload = null; Reason = ((HttpWebResponse)ex.Response).StatusDescription; return(Status.LoginStatusCode.InvalidCredentials); default: payload = null; return(Status.LoginStatusCode.ServerError); } } }