Ejemplo n.º 1
0
        public async Task <GenericResponse <GenericPayload> > SignUp(SignUpRequest newUser)
        {
            var response = new GenericResponse <GenericPayload>();

            try
            {
                using (_userRepository)
                {
                    response.Status  = HttpStatusCode.OK;
                    response.Message = "Success";
                    var payload = new GenericPayload()
                    {
                        IsSuccess = false,
                    };

                    var isCreated = await TryCreateUser(_userRepository, newUser);

                    payload.IsSuccess       = isCreated;
                    payload.SpecificMessage = isCreated ? "User created" : $"Unable to create user {newUser.UserEmail}";

                    response.Payload = payload;
                }
            }
            catch (Exception ex)
            {
                response.Status  = HttpStatusCode.InternalServerError;
                response.Message = "Failed";
            }

            return(response);
        }
Ejemplo n.º 2
0
        private void OnDataReceived(ConnectionService con, ref NetworkMessage data)
        {
            if (data.tag == (int)UsersPluginRequestTags.TryLoginRequest)
            {
                data.DecodeData();
                var requestPayload = data.data as GenericPayload <TryLoginRequestModel>;
                if (requestPayload == null)
                {
                    Interface.LogError("Could not parse the payload");
                    return;
                }

                using (UsersManager manager = new UsersManager())
                {
                    var      payload   = new GenericPayload <TryLoginResponseModel>();
                    GameUser user      = null;
                    bool     isSuccess = manager.TryLogin(requestPayload.Value.Username,
                                                          requestPayload.Value.Password,
                                                          out user);
                    payload.Value = new TryLoginResponseModel
                    {
                        IsSuccess = isSuccess,
                        Username  = user == null ? string.Empty : user.Username,
                    };

                    con.SendReply((int)UsersPluginResponseTags.TryLoginResponse,
                                  data.subject,
                                  payload);
                }
            }
        }
Ejemplo n.º 3
0
        public void Action_Should_Be_Equal()
        {
            // Arrange
            var action = "test";

            _sut = new GenericPayload {
                Action = action
            };

            // Assert
            _sut.Action.Should().Be(action);
        }
Ejemplo n.º 4
0
        public void TryLogin()
        {
            if (m_Connection.isConnected && IsLoginBtnInteractable)
            {
                IsLoginBtnInteractable = false;
                var payload = new GenericPayload <TryLoginRequestModel>
                {
                    Value = new TryLoginRequestModel
                    {
                        Username = Username,
                        Password = Password
                    }
                };

                m_Connection.SendMessageToServer((int)UsersPluginRequestTags.TryLoginRequest
                                                 , 0
                                                 , payload);
            }
        }
Ejemplo n.º 5
0
        //new Thread(async()
        //    => await HeartbeatSerivce()).Start();

        public async Task HeartbeatSerivce(int bufferSize = 1024, bool isDebugging = false)
        {
            ClientWebSocket     ws            = new ClientWebSocket();
            CancellationToken   ct            = new CancellationToken();
            ArraySegment <byte> receiveBuffer = new ArraySegment <byte>(new byte[bufferSize]);
            ArraySegment <byte> sendBuffer    = new ArraySegment <byte>(new byte[bufferSize]);

            await ws.ConnectAsync(new Uri("wss://gateway.discord.gg/?encoding=json&v=6"), ct);

            while (ws.State == WebSocketState.Connecting)
            {
                Thread.Sleep(10);
            }

            bool hasHeartbeat      = false;
            int  heartbeatInterval = 0;
            long previousHeartbeat = DateTimeOffset.Now.ToUnixTimeMilliseconds();

            GenericPayload lastPayload = new GenericPayload();

            while (ws.State == WebSocketState.Open)
            {
                if (hasHeartbeat == false)
                {
                    await ws.ReceiveAsync(receiveBuffer, ct);

                    string jsonData = Encoding.ASCII.GetString(receiveBuffer.ToArray()).Replace(" ", "");

                    GatewayPayload   gateway   = JsonConvert.DeserializeObject <GatewayPayload>(jsonData, JsonSettings);
                    HeartbeatPayload heartbeat = JsonConvert.DeserializeObject <HeartbeatPayload>(gateway.d.ToString(), JsonSettings);

                    lastPayload = new GenericPayload()
                    {
                        op = gateway.op,
                        d  = gateway.s,
                    };

                    heartbeatInterval = heartbeat.heartbeat_interval;
                    hasHeartbeat      = true;
                }
                else
                {
                    if (previousHeartbeat + heartbeatInterval - 1500 <= DateTimeOffset.Now.ToUnixTimeMilliseconds())
                    {
                        GenericPayload payload = new GenericPayload()
                        {
                            op = 1,
                            d  = lastPayload.d
                        };

                        string jsonData = JsonConvert.SerializeObject(payload);
                        byte[] data     = Encoding.ASCII.GetBytes(jsonData);

                        sendBuffer = new ArraySegment <byte>(data);

                        await ws.SendAsync(sendBuffer, WebSocketMessageType.Text, true, ct);

                        Console.WriteLine("HEARTBEAT");

                        await ws.ReceiveAsync(receiveBuffer, ct);

                        data = receiveBuffer.ToArray();

                        int i = 0;
                        for (i = data.Length - 1; data[i] == 0; i--)
                        {
                            ;
                        }

                        byte[] responseData = new byte[i];
                        Buffer.BlockCopy(data, 0, responseData, 0, responseData.Length);

                        jsonData = Encoding.ASCII.GetString(responseData);
                        Console.WriteLine(jsonData);

                        previousHeartbeat = DateTimeOffset.Now.ToUnixTimeMilliseconds();
                    }
                }
                receiveBuffer = new ArraySegment <byte>(new byte[bufferSize]);

                Thread.Sleep(1);
            }
        }