Пример #1
0
        public ActionResult <dynamic> Hearbeat([FromForm] GameLobby lobby, [FromForm] Jwt jwt)
        {
            if (!jwt.Verify())
            {
                return(BadRequest("Bad token"));
            }
            var elob = Db.GameLobbies.Find(x => x.Id == lobby.Id).FirstOrDefaultAsync();

            return(StatusCode(200));
        }
Пример #2
0
        public ActionResult <string> Single([FromForm] Jwt jwt, string serverId)
        {
            //verify token sync
            if (!jwt.Verify())
            {
                return(BadRequest(412));
            }
            var srv = Db.GameLobbies.Find(x => x.Id == serverId).FirstOrDefault();

            return(JsonConvert.SerializeObject(srv));
        }
Пример #3
0
        public ActionResult Send([FromForm] WarchatMsg msg, [FromForm] Jwt jwt)
        {
            if (!jwt.Verify())
            {
                return(StatusCode(406));
            }

            msg.Time = DateTime.UtcNow;
            Db.Warchat.InsertOne(msg);
            return(StatusCode(200));
        }
Пример #4
0
        public ActionResult <string> Pm(string playerId, [FromForm] Jwt jwt, [FromForm] PrivateMessage msg)
        {
            if (!jwt.Verify())
            {
                return(BadRequest(412));
            }
            msg.Time = DateTime.UtcNow;
            var pt = Db.Players.Find(x => x.UserId == playerId).FirstOrDefaultAsync();

            if (msg.Content.Length > 240)
            {
                msg.Content = msg.Content[0..240];
Пример #5
0
        public async Task <ActionResult <string> > PHeartbeat([FromForm] Jwt jwt)
        {
            if (!jwt.Verify())
            {
                return(BadRequest("Bad token"));
            }
            var p = await Utils.GetPlayer(jwt);

            var upd = new UpdateDefinitionBuilder <Player>().Set("LastSeen", DateTime.UtcNow);

            _ = Db.Players.UpdateOneAsync(x => x.Id == p.Id, upd);

            return(StatusCode(200));
        }
Пример #6
0
        public ActionResult <string> GetAll([FromForm] Jwt jwt, [FromForm] LobbySearchFilter filter)
        {
            //discover servers async
            var servers = Db.GameLobbies.Find(x =>
                                              x.IsRunning == filter.RunningGames &&
                                              (x.Description.Contains(filter.NameContains) || x.Name.Contains(filter.NameContains)) &&
                                              (filter.HasPassword
                    ? (!string.IsNullOrWhiteSpace(x.Password) && string.IsNullOrWhiteSpace(x.Password))
                    : string.IsNullOrWhiteSpace(x.Password)) &&
                                              filter.GameModes.Contains(x.GameMode)).ToListAsync();

            //verify token sync
            if (!jwt.Verify())
            {
                return(BadRequest(403));
            }

            return(JsonConvert.SerializeObject(servers.Result));
        }
Пример #7
0
        public ActionResult <string> Get([FromForm] string time, [FromForm] Jwt jwt)
        {
            if (!jwt.Verify())
            {
                return(StatusCode(406));
            }
            if (!DateTime.TryParse(time, out var since))
            {
                return(StatusCode(400));
            }
            if (since < DateTime.UtcNow - TimeSpan.FromMinutes(20))
            {
                since = DateTime.UtcNow - TimeSpan.FromMinutes(20);
            }

            var msgs = Db.Warchat.Find(x => x.Time >= since);

            return(JsonConvert.SerializeObject(msgs));
        }
Пример #8
0
        public ActionResult <string> Connect([FromForm] Jwt jwt, string serverId)
        {
            var srv = Db.GameLobbies.Find(x => x.Id == serverId).FirstOrDefaultAsync();

            if (!jwt.Verify())
            {
                return(BadRequest());
            }
            var player = Db.Players.Find(x => jwt.Username == x.Username).FirstOrDefault();

            if (srv.Result == null)
            {
                return(BadRequest(404));
            }

            var upd = new UpdateDefinitionBuilder <Player>().Set("LastSeen", DateTime.UtcNow).Set("CurrentLobbyId", serverId);

            _ = Db.Players.UpdateOneAsync(x => x.Id == player.Id, upd);


            return(StatusCode(200));
        }
Пример #9
0
 public ActionResult <string> VoteKick([FromForm] Jwt jwt, string playerId, string serverId)
 {
     return("");
 }
Пример #10
0
 public ActionResult <string> Leave([FromForm] Jwt jwt, string serverId)
 {
     return("");
 }
Пример #11
0
 public static Task <User> GetUser(Jwt jwt) => Task.FromResult(Db.Users.Find(x => x.Username == jwt.Username).FirstOrDefault());
Пример #12
0
 public static bool VerifyJwt(Jwt jwt)
 {
     return(true);
 }