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);
        }
Exemplo n.º 2
0
        /// <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);
        }