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); }
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)); }
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); }
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)); }
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)); }