private async Task <string> getSavedAddress(GPSUser user, string name) { var names = db.GetUserLocations(user.Username); if (names != null) { int i = 0; foreach (var n in names) { if (names[i] == name) { break; } i++; } string osmID = db.GetAddress(user.Username, names[i]); string address = await GetRequest.GetFromURLAsync(String.Format("https://nominatim.openstreetmap.org/lookup?osm_ids={0}&format=json", osmID)); return(address); } else { return(null); } }
public async Task RunServer() { Listener.Start(); while (true) { _ = await Listener.AcceptTcpClientAsync().ContinueWith(async(t) => { byte[] buffer = new byte[1024]; GPSUser user = new GPSUser(t.Result); while (true) { string input = await getUserInput(user.client, buffer); Array.Clear(buffer, 0, buffer.Length); //Console.WriteLine($"CLIENT: {input}"); _ = Task.Run(async() => { string response = ""; try { response = await processCommand(user, input); } catch (Exception ex) { throw new Exception(ex.Message); } //.WriteLine($"SERVER: {response}"); await Send(user.client, response); }); } }); } }
private async Task <string> processCommand(GPSUser user, string fullMessage) { string[] arguments = fullMessage.Split(" "); string command = arguments[0]; if (command == "LOGIN") { if (user.LoggedIn || arguments.Length != 3) { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } string arg1 = arguments[1].Trim(); string arg2 = arguments[2].Trim(); string username = await login(arg1, arg2); if (username != null) { //login succesful user.Username = username; user.LoggedIn = true; return("SUCCESS"); } else { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } } else if (command == "LOGOUT") { if (!user.LoggedIn) { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } user.LoggedIn = false; user.Username = null; return("SUCCESS"); } else if (command == "CREATEACCOUNT") { if (user.LoggedIn || arguments.Length != 3) { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } if (await createAccount(arguments[1], arguments[2])) { return("ACCOUNTCREATED"); } else { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } } else if (command == "CHANGEPASSWORD") { if (!user.LoggedIn || arguments.Length != 3) { return("FAIL"); } if (db.ChangePassword(user.Username, arguments[1], arguments[2])) { return("SUCCESS"); } else { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } } else if (command == "GETADDRESS") { if (!user.LoggedIn) { return("FAIL"); } //assuming that client replaced spaces with + Address[] address = await getAddresses(arguments[1]); if (address != null) { return(JsonSerializer.Serialize <Address[]>(address)); } else { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } } else if (command == "GETROUTE") { if (!user.LoggedIn) { return("FAIL"); } RouteModel instructions = await getRoute(arguments[1], arguments[2], arguments[3], arguments[4]); if (instructions != null) { return(JsonSerializer.Serialize(instructions)); } else { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } } else if (command == "LISTSAVEDADDRESSES") { if (!user.LoggedIn) { return("FAIL"); } string result = await listSavedAddressess(user.Username); if (result != null) { return(result); } else { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } } else if (command == "GETSAVEDADDRESS") { if (!user.LoggedIn) { return("FAIL"); } return(await getSavedAddress(user, arguments[1])); } else if (command == "EDITADDRESS") { if (!user.LoggedIn) { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } if (arguments.Length == 3) { if (await editAddress(user.Username, arguments[1], arguments[2])) { return("SUCCESS"); } } else if (arguments.Length == 5) { if (await editAddress(user.Username, arguments[1], arguments[2], arguments[3], arguments[4])) { return("SUCCESS"); } } else { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } } else if (command == "ADDADDRESS") { if (!user.LoggedIn || arguments.Length != 4) { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } if (db.AddLocation(user.Username, arguments[1], arguments[2], arguments[3])) { return("SUCCESS"); } else { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } } else if (command == "DELETEADDRESS") { if (!user.LoggedIn || arguments.Length != 2) { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } if (db.DeleteLocation(user.Username, arguments[1])) { return("SUCCESS"); } else { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } } else if (command == "DESCRIBEADDRESS") { if (!user.LoggedIn || arguments.Length != 3) { #if DEBUG Console.WriteLine("PAKIET: " + fullMessage); #endif return("FAIL"); } return(await getAddressInfo(arguments[1], arguments[2])); } return("UNKNOWNCOMMAND"); }
public GPSUser RegisterUser(GPSUser user) { throw new NotImplementedException(); }
/// <summary> /// Create a new GPSUser object. /// </summary> /// <param name="userLoginID">Initial value of UserLoginID.</param> /// <param name="roleID">Initial value of RoleID.</param> public static GPSUser CreateGPSUser(string userLoginID, int roleID) { GPSUser gPSUser = new GPSUser(); gPSUser.UserLoginID = userLoginID; gPSUser.RoleID = roleID; return gPSUser; }
/// <summary> /// There are no comments for GPSUser in the schema. /// </summary> public void AddToGPSUser(GPSUser gPSUser) { base.AddObject("GPSUser", gPSUser); }