public async Task <IActionResult> Bookmark(int?id = null) { if (Throttled && !ThrottlingService.CanAccess(User, Request)) { return(StatusCode(429, ThrottleService.Message)); } var team = await DbContext.Teams.SingleOrDefaultAsync(x => x.Id == id); if (team == null) { return(BadRequest("Could not find team.")); } var userId = User.GetId(); var profile = await DbContext.UserProfiles.SingleOrDefaultAsync(x => x.Id == userId); if (profile == null) { return(Unauthorized()); } var existed = team.BookmarkedUsers.Any(x => x.Id == userId); if (existed) { team.BookmarkedUsers.Remove(profile); } else { team.BookmarkedUsers.Add(profile); } await DbContext.SaveChangesSafe(); return(Ok(!existed)); }
public async Task <IActionResult> Vote([FromBody] TeamVoteModel model, int?id = null) { if (Throttled && !ThrottlingService.CanAccess(User, Request)) { return(StatusCode(429, ThrottleService.Message)); } var teamId = id ?? model.TeamId; var userId = User.GetId(); var vote = await DbContext.TeamVotes.SingleOrDefaultAsync(x => x.TeamId == model.TeamId && x.UserId == userId); var exists = vote != null; vote = vote ?? new TeamVote { TeamId = teamId, UserId = userId, SubmittedDate = DateTimeOffset.Now }; var value = model.Up.HasValue ? (model.Up ?? true) ? 1 : -1 : 0; if (!exists) { DbContext.TeamVotes.Add(vote); } vote.Value = (short)value; await DbContext.SaveChangesSafe(); await UpdateTeamScores(teamId); var returnValue = (await DbContext.TeamScores.SingleOrDefaultAsync(x => x.TeamId == teamId))?.Value ?? 0; return(Ok(returnValue)); }
public static void Main(string[] args) { const int numberOfAllowedRequests = 10; const int perNumberOfMinutes = 1; const string callerIdentity = "our-friendly-client"; using (var service = new ThrottlingService(numberOfAllowedRequests, perNumberOfMinutes)) { // Quick loop to use up all the allowed requests. for (var i = 1; i <= numberOfAllowedRequests + 1; i++) { var isThrottled = service.IsThrottled(callerIdentity); Console.WriteLine($"Request #{i.ToString().PadLeft(numberOfAllowedRequests.ToString().Length, '0')} is throttled: {isThrottled}"); } // Snooze while the window moves on... Thread.Sleep(TimeSpan.FromMinutes(perNumberOfMinutes)); // Loop over and make more requests. for (var i = numberOfAllowedRequests + 2; i <= numberOfAllowedRequests + numberOfAllowedRequests + 2; i++) { var isThrottled = service.IsThrottled(callerIdentity); Console.WriteLine($"Request #{i.ToString().PadLeft(numberOfAllowedRequests.ToString().Length, '0')} is throttled: {isThrottled}"); } } Console.WriteLine("Test finished, press any key to exit"); Console.ReadKey(); }
protected override async Task <object> PerformPost(TeamCommentEditorModel model, int?id = null) { if (Throttled && !ThrottlingService.CanAccess(User, Request, Request.Path, COMMENT_TIMEOUT)) { return(StatusCode(429, ThrottleService.Message)); } return(await base.PerformPost(model, id)); }
public async Task <IActionResult> Reports(int?id = null) { if (Throttled && !ThrottlingService.CanAccess(User, Request)) { return(StatusCode(429, ThrottleService.Message)); } var reports = await DbContext .TeamReports .Where(x => x.TeamId == id) .OrderBy(x => x.AcknowledgedDate) .ThenBy(x => x.TeamId) .ProjectTo <TeamReportStubModel>(AutoMapper.ConfigurationProvider) .ToArrayAsync(); return(Ok(reports)); }
public async Task <IActionResult> Report([FromBody] TeamReportModel model, int?id = null) { if (Throttled && !ThrottlingService.CanAccess(User, Request)) { return(StatusCode(429, ThrottleService.Message)); } var teamId = id ?? model.TeamId; DbContext.TeamReports.Add(new TeamReport { TeamId = teamId, Reason = model.Reason }); await DbContext.SaveChangesSafe(); return(Ok(teamId)); }
public async Task <IActionResult> Report([FromBody] TeamCommentReportModel model, int?id = null) { if (Throttled && !ThrottlingService.CanAccess(User, Request)) { return(StatusCode(429, ThrottleService.Message)); } var teamCommentId = id ?? model.TeamCommentId; var team = DbContext.TeamComments.SingleOrDefault(x => x.Id == teamCommentId); if (team != null) { team.Reported = true; await DbContext.SaveChangesSafe(); } return(Ok(teamCommentId)); }
public async Task <IActionResult> Focus(int?id) { if (Throttled && !ThrottlingService.CanAccess(User, Request, Request.Path)) { return(StatusCode(429, ThrottleService.Message)); } if (id.HasValue && User.IsInRole(RoleConstants.BoxUser)) { await _preferenceService.SetPreference(User.GetId(), UserPreferenceType.BoxId, id?.ToString()); return(await Detail(id)); } else { await _preferenceService.ClearPreference(User.GetId(), UserPreferenceType.BoxId); return(Ok(1)); } }