示例#1
0
        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"
                };
            }
        }
示例#2
0
 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
     });
 }
示例#3
0
        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");
            }
        }
示例#4
0
 public UnoService(SlackActionRequest request, TraceWriter log)
     : this(request.ToSlackRequest(), log)
 {
 }