private async Task HandleRegisterRequest(RegisterRequestMessage msg) { var success = false; try { var imgData = msg.Images.Select(i => Convert.FromBase64String(i)); var newUser = await Database.Instance.AddUser(msg.User); Console.WriteLine($"RegisterRequest: images to send: {imgData.Count()} \n user: {newUser.ToJson()}"); if (await FaceAPIConnection.Instance.RegisterUser(newUser, imgData)) { Console.WriteLine($"new User registered: {newUser._id}"); success = true; } } catch (Exception ex) { Console.WriteLine($"HandleRegister: {ex.Message}"); success = false; } await SendRegisterResponse(success); }
/// <summary> /// Try to register client. Send response about result. /// </summary> /// <param name="client">client.</param> /// <param name="message">client's message.</param> private void RegisterClient(MpClient client, RegisterRequestMessage message) { Message response; if (string.IsNullOrEmpty(message.Login) || string.IsNullOrEmpty(message.Password) || message.Login.Length > 20 || message.Password.Length > 30) { response = new LoginRegisterResponseMessage { Response = LoginRegisterResponse.Error }; } else { if (DBoperations.Register(message.Login, message.Password)) { log.Info($"Client registered: {message.Login}"); response = new LoginRegisterResponseMessage { Response = LoginRegisterResponse.Success }; } else { response = new LoginRegisterResponseMessage { Response = LoginRegisterResponse.Fail }; } } try { // response to client client.SendMessage(response); } catch (ConnectionInterruptedException e) { log.Error("Connection with client brokes.", e); } // close connection log.Info($"Client disconnected. ip {((IPEndPoint)client.tcpClient.Client.RemoteEndPoint).Address.ToString()}"); try { client.Close(); } catch (ConnectionInterruptedException e) { log.Error(e); } }
public async Task <bool> TryRegister(User data, IEnumerable <byte[]> images, int timeoutMs = 120000) { var imagesBase64 = images.Select(Convert.ToBase64String); var msg = new RegisterRequestMessage { Images = imagesBase64, User = data }; await SendMessage(msg); var resp = await WaitForRequestResponse <RegisterResponseMessage>(timeoutMs, MessageType.RegisterResponse); return(resp != null && resp.success); }