Beispiel #1
0
        public async Task <DateTime> AddTimeout(string recipient, int broadcasterId, double seconds, string twitchBotApiLink)
        {
            DateTime timeoutExpiration = DateTime.UtcNow.AddSeconds(seconds);

            UserBotTimeout timedoutUser = new UserBotTimeout();

            if (TimedoutUsers.Any(m => m.Username == recipient))
            {
                timedoutUser = await ApiBotRequest.PatchExecuteTaskAsync <UserBotTimeout>(
                    twitchBotApiLink + $"userbottimeouts/patch/{broadcasterId}?username={recipient}",
                    "timeout",
                    timeoutExpiration);

                TimedoutUsers.RemoveAll(t => t.Username == recipient);
            }
            else
            {
                timedoutUser = await ApiBotRequest.PostExecuteTaskAsync(
                    twitchBotApiLink + $"userbottimeouts/create",
                    new UserBotTimeout { Username = recipient, Timeout = timeoutExpiration, Broadcaster = broadcasterId }
                    );
            }

            TimedoutUsers.Add(new TimeoutUser
            {
                Username             = recipient,
                TimeoutExpirationUtc = timeoutExpiration,
                HasBeenWarned        = false
            });

            return(timeoutExpiration);
        }
Beispiel #2
0
        public async Task <IActionResult> Create([FromBody] UserBotTimeout userBotTimeout)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.UserBotTimeout.Add(userBotTimeout);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("Get", new { broadcasterId = userBotTimeout.Broadcaster, username = userBotTimeout.Username }, userBotTimeout));
        }
Beispiel #3
0
        public async Task <string> DeleteUserTimeout(string recipient, int broadcasterId, string twitchBotApiLink)
        {
            UserBotTimeout removedTimeout = await ApiBotRequest.DeleteExecuteTaskAsync <UserBotTimeout>(twitchBotApiLink + $"userbottimeouts/delete/{broadcasterId}?username={recipient}");

            if (removedTimeout == null)
            {
                return("");
            }

            string name = removedTimeout.Username;

            TimedoutUsers.RemoveAll(r => r.Username == name);
            return(name);
        }
Beispiel #4
0
        public async Task <IActionResult> Delete([FromRoute] int broadcasterId, [FromQuery] string username = "")
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var botTimeout = new object();

            if (!string.IsNullOrEmpty(username))
            {
                UserBotTimeout userBotTimeout = await _context.UserBotTimeout
                                                .SingleOrDefaultAsync(m => m.Username == username && m.Broadcaster == broadcasterId);

                if (userBotTimeout == null)
                {
                    return(NotFound());
                }

                _context.UserBotTimeout.Remove(userBotTimeout);

                botTimeout = userBotTimeout;
            }
            else
            {
                List <UserBotTimeout> userBotTimeouts = await _context.UserBotTimeout
                                                        .Where(m => m.Broadcaster == broadcasterId && m.Timeout < DateTime.UtcNow)
                                                        .ToListAsync();

                if (userBotTimeouts == null || userBotTimeouts.Count == 0)
                {
                    return(NotFound());
                }

                _context.UserBotTimeout.RemoveRange(userBotTimeouts);

                botTimeout = userBotTimeouts;
            }

            await _context.SaveChangesAsync();

            return(Ok(botTimeout));
        }
Beispiel #5
0
        public async Task <IActionResult> Patch([FromRoute] int broadcasterId, [FromQuery] string username, [FromBody] JsonPatchDocument <UserBotTimeout> botTimeoutPatch)
        {
            UserBotTimeout userBotTimeout = _context.UserBotTimeout.SingleOrDefault(m => m.Username == username && m.Broadcaster == broadcasterId);

            if (userBotTimeout == null)
            {
                return(BadRequest());
            }

            botTimeoutPatch.ApplyTo(userBotTimeout, ModelState);

            if (!ModelState.IsValid)
            {
                return(new BadRequestObjectResult(ModelState));
            }

            _context.UserBotTimeout.Update(userBotTimeout);

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!UserBotTimeoutExists(broadcasterId, username))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(Ok(userBotTimeout));
        }