private async Task ProcessGithubConnectCommand(SlackCommandDto slackCommand) { string workspaceId = slackCommand.team_id; string workspaceMemberId = slackCommand.user_id; ChatAppUserEntity workspaceUser = await _chatAppUserStorage.FindAsync(u => u.WorkspaceId == workspaceId && u.WorkspaceMemberId == workspaceMemberId); var githubService = new GitHubService(); var slackCommandResponse = new SlackCommandResponseDto(); var user = workspaceUser.User; try { var organizationMembership = await githubService.InviteToGithubOrg(slackCommand.text); user.GitHubUsername = slackCommand.text; await _userStorage.UpdateAsync(user); } catch { slackCommandResponse.Text = "Sorry, something happened with our GitHub api call. :(\n Please try once more. If that doesn't work, reach out to <@UBW8QQG86> to be added manually."; await _slackService.RespondViaResponsUrl(slackCommand.response_url, slackCommandResponse); return; } slackCommandResponse.Text = $"Success! You should have gotten an email with an invite to the GitHub org. You can also visit https://github.com/{_githubOrganization} to accept the invite."; await _slackService.RespondViaResponsUrl(slackCommand.response_url, slackCommandResponse); return; }
private async Task ProcessProjectsCommand(SlackCommandDto slackCommand) { var projects = (await _projectStorage.FindAsync()).FindAll(p => p.LookingForMembers && p.Searchable); var slackCommandResponse = BuildProjectsResponse(projects); await _slackService.RespondViaResponsUrl(slackCommand.response_url, slackCommandResponse); return; }
public async Task <ActionResult> RecieveCommand([FromForm] SlackCommandDto slackCommandDto) { if (await _slackRequestValidator.IsValid(Request)) { await _messageQueue.SendMessageAsync(slackCommandDto, "command"); return(Ok()); } return(BadRequest()); }
private async Task GenerateMagicLoginLink(SlackCommandDto slackCommand) { var linkExpirationInMinutes = 5; string token = TokenHelper.GenerateToken().Replace("/", ""); string workspaceId = slackCommand.team_id; string workspaceMemberId = slackCommand.user_id; ChatAppUserEntity workspaceUser = await _chatAppUserStorage.FindAsync(u => u.WorkspaceId == workspaceId && u.WorkspaceMemberId == workspaceMemberId); var user = workspaceUser.User; user.MagicLoginToken = token; user.MagicLoginTokenExpiresAt = DateTimeOffset.Now.AddMinutes(linkExpirationInMinutes); await _userStorage.UpdateAsync(user); var slackCommandResponse = new SlackCommandResponseDto(); slackCommandResponse.Text = $"Your magic login link expires in {linkExpirationInMinutes} minutes.\n\n {_mainUrl}/magic-login?token={Uri.EscapeDataString(token)}"; await _slackService.RespondViaResponsUrl(slackCommand.response_url, slackCommandResponse); return; }
public async Task ProcessCommand(SlackCommandDto slackCommandDto) { SlackCommandResponseDto slackCommandResponse = new SlackCommandResponseDto(); switch (slackCommandDto.command) { case "/projects": await ProcessProjectsCommand(slackCommandDto); break; case "/github-connect": await ProcessGithubConnectCommand(slackCommandDto); break; case "/magic-login-link": await GenerateMagicLoginLink(slackCommandDto); break; } return; }
public async Task <ActionResult> Equipment([FromForm] SlackCommandDto slackCommand) { var result = await _statsCommands.Equipment(slackCommand.ToCommand()); return(Ok(result.Message)); }
public ActionResult Balance([FromForm] SlackCommandDto slackCommand) { var result = _statsCommands.Balance(slackCommand.ToCommand()); return(Ok(result.Message)); }
public async Task <ActionResult> Shop([FromForm] SlackCommandDto slackCommand) { var result = await _creditsCommands.Shop(slackCommand.ToCommand()); return(Ok(result.Message)); }
public ActionResult Leaderboard([FromForm] SlackCommandDto slackCommand) { var result = _creditsCommands.Leaderboard(slackCommand.ToCommand()); return(Ok(result.Message)); }
public ActionResult Forbes([FromForm] SlackCommandDto slackCommand) { var result = _creditsCommands.Forbes(slackCommand.ToCommand()); return(Ok(result.Message)); }
public async Task <ActionResult> Command([FromForm] SlackCommandDto slackCommand) { var result = await _luaService.ExecuteScript(slackCommand.ToCommand()); return(Ok(result.Message)); }
public async Task <ActionResult> JoinCoffeeOther([FromForm] SlackCommandDto slackCommand) { var result = await _slursCommands.Flame(slackCommand.ToCommand()); return(Ok(result.Message)); }
public ActionResult GambleChallenge([FromForm] SlackCommandDto slackCommand) { var result = _casinoCommands.GambleChallenge(slackCommand.ToCommand()); return(Ok(result.Message)); }
public ActionResult Equip([FromForm] SlackCommandDto slackCommand) { var result = _inventoryCommands.Equip(slackCommand.ToCommand()); return(Ok(result.Message)); }
public async Task <ActionResult> Revolution([FromForm] SlackCommandDto slackCommand) { var result = await _combatCommands.Revolution(slackCommand.ToCommand()); return(Ok(result.Message)); }
public ActionResult Wholast([FromForm] SlackCommandDto slackCommand) { var result = _slursCommands.WhoLast(slackCommand.ToCommand()); return(Ok(result.Message)); }
public ActionResult ViewSlurs([FromForm] SlackCommandDto slackCommand) { var result = _slursCommands.Slurs(slackCommand.ToCommand()); return(Ok(result.Message)); }
public async Task <ActionResult> CleanSlurs([FromForm] SlackCommandDto slackCommand) { var result = await _slursCommands.Clean(slackCommand.ToCommand()); return(Ok(result.Message)); }
public ActionResult LeaveParty([FromForm] SlackCommandDto slackCommand) { var result = _combatCommands.LeaveParty(slackCommand.ToCommand()); return(Ok(result.Message)); }
public async Task <ActionResult> Monsters([FromForm] SlackCommandDto slackCommand) { var result = await _combatCommands.ListMonsters(slackCommand.ToCommand()); return(Ok(result.Message)); }
public async Task <ActionResult> Inventory([FromForm] SlackCommandDto slackCommand) { var result = await _inventoryCommands.Inventory(slackCommand.ToCommand()); return(Ok(result.Message)); }
public async Task <ActionResult> PartyInvite([FromForm] SlackCommandDto slackCommand) { var result = await _combatCommands.PartyInvite(slackCommand.ToCommand()); return(Ok(result.Message)); }
/// <summary> /// Message to process incoming messages from service bus queue. /// </summary> /// <param name="message"></param> /// <param name="token"></param> /// <returns></returns> private async Task ProcessMessagesAsync(Microsoft.Azure.ServiceBus.Message message, CancellationToken token) { try { string messageBody = Encoding.UTF8.GetString(message.Body); switch (message.Label) { case "command": SlackCommandDto slackCommandDto = JsonConvert.DeserializeObject <SlackCommandDto>(messageBody); await _commandHandler.ProcessCommand(slackCommandDto); await _queueClient.CompleteAsync(message.SystemProperties.LockToken); break; case "event": SlackEventDto slackEventDto = JsonConvert.DeserializeObject <SlackEventDto>(messageBody); await _eventHandler.ProcessEvent(slackEventDto); await _queueClient.CompleteAsync(message.SystemProperties.LockToken); break; case "projectpost": await _apiEventHandler.ProcessProjectPost(messageBody); await _queueClient.CompleteAsync(message.SystemProperties.LockToken); break; case "registration": RegistrationDto registration = JsonConvert.DeserializeObject <RegistrationDto>(messageBody); await _apiEventHandler.ProcessRegistration(registration); await _queueClient.CompleteAsync(message.SystemProperties.LockToken); break; case "feedback": FeedbackDto feedback = JsonConvert.DeserializeObject <FeedbackDto>(messageBody); await _apiEventHandler.ProcessFeedback(feedback); await _queueClient.CompleteAsync(message.SystemProperties.LockToken); break; default: _logger.LogWarning($"No label associated with message:{message.SystemProperties.SequenceNumber}"); break; } ; _logger.LogInformation($"Processed message: SequenceNumber:{message.SystemProperties.SequenceNumber}"); } catch (Exception ex) { // failed to process message, mark as Abandoned _logger.LogError(ex, $"Error processing message: SequenceNumber:{message.SystemProperties.SequenceNumber}"); await _queueClient.DeadLetterAsync(message.SystemProperties.LockToken); } }