public override void OnActionExecuting(ActionExecutingContext context) { bool success = false; if (context.ActionArguments.Keys.Contains("slackRequest")) { SlackRequest sr = context.ActionArguments["slackRequest"] as SlackRequest; if (sr.token == config.GetValue <string>("SlackVerificationToken")) { success = true; } } if (context.ActionArguments.Keys.Contains("payload")) { SlackActionRequest sr = JsonConvert.DeserializeObject <SlackActionRequest>(context.ActionArguments["payload"] as string); if (sr.token == config.GetValue <string>("SlackVerificationToken")) { success = true; } } if (!success) { context.HttpContext.Response.StatusCode = 403; context.Result = new ContentResult() { Content = "Bad Slack verification token" }; } }
public static SlackRequest ToSlackRequest(this SlackActionRequest action) { return(new SlackRequest { ResponseUrl = action.ResponseUrl, Token = action.Token, TriggerId = action.TriggerId, ChannelId = action.Channel.Id, ChannelName = action.Channel.Name, TeamDomain = action.Team.Domain, TeamId = action.Team.Id, UserId = action.User.Id, UserName = action.User.Name }); }
public string SlackAction(string payload) { SlackActionRequest actionRequest = JsonConvert.DeserializeObject <SlackActionRequest>(payload); SlackAction action = actionRequest.actions.First(); string actionName = action.name; switch (actionName) { case "revoke": int ticketId = Int32.Parse(action.value); Ticket ticketToDelete = context.Tickets.FirstOrDefault(t => t.ID == ticketId); if (ticketToDelete == null) { return("Oops, I cannot find that ticket."); } context.Tickets.Remove(ticketToDelete); context.SaveChanges(); return($"Deleted... Like taking candy from a high schooler..."); default: return("ERROR"); } }
public UnoService(SlackActionRequest request, TraceWriter log) : this(request.ToSlackRequest(), log) { }