예제 #1
0
    private void ProcessFormContent()
    {
        mailgunRequestPayload = new MailgunRequestPayload
        {
            TimeStamp                  = request.Form["timestamp"].AsInteger(),
            Token                      = request.Form["token"] ?? string.Empty,
            Signature                  = request.Form["signature"] ?? string.Empty,
            EventType                  = request.Form["event"] ?? string.Empty,
            WorkflowActionGuid         = request.Form["workflow_action_guid"] ?? string.Empty,
            CommunicationRecipientGuid = request.Form["communication_recipient_guid"] ?? string.Empty,
            XMailgunVariables          = request.Form["X-Mailgun-Variables"] ?? string.Empty,
            ClientName                 = request.Form["client-name"] ?? string.Empty,
            ClientOs                   = request.Form["client-os"] ?? string.Empty,
            ClientType                 = request.Form["client-type"] ?? string.Empty,
            DeviceType                 = request.Form["device-type"] ?? string.Empty,
            Ip           = request.Form["ip"] ?? string.Empty,
            Url          = request.Form["url"] ?? string.Empty,
            Description  = request.Form["description"] ?? string.Empty,
            Notification = request.Form["notification"] ?? string.Empty,
            Recipient    = request.Form["recipient"] ?? string.Empty
        };

        ProcessRequest();
    }
예제 #2
0
    private void ProcessJsonContent()
    {
        string payload = string.Empty;

        using (Stream s = request.InputStream)
        {
            using (StreamReader readStream = new StreamReader(s, Encoding.UTF8))
            {
                payload = readStream.ReadToEnd();
            }
        }

        var jObject = JsonConvert.DeserializeObject <JObject>(payload);

        if (jObject == null)
        {
            response.Write("Invalid content type.");
            response.StatusCode = ( int )System.Net.HttpStatusCode.NotAcceptable;
            return;
        }

        mailgunRequestPayload = new MailgunRequestPayload();

        if (jObject["signature"] != null)
        {
            mailgunRequestPayload.TimeStamp = jObject["signature"]["timestamp"] != null ? ( int )jObject["signature"]["timestamp"] : 0;
            mailgunRequestPayload.Token     = jObject["signature"]["token"] != null ? ( string )jObject["signature"]["token"] : string.Empty;
            mailgunRequestPayload.Signature = jObject["signature"]["signature"] != null ? ( string )jObject["signature"]["signature"] : string.Empty;
        }

        if (jObject["event-data"] != null)
        {
            mailgunRequestPayload.EventType         = jObject["event-data"]["event"] != null ? ( string )jObject["event-data"]["event"] : string.Empty;
            mailgunRequestPayload.EventTypeReason   = jObject["event-data"]["reason"] != null ? ( string )jObject["event-data"]["reason"] : string.Empty;
            mailgunRequestPayload.XMailgunVariables = jObject["event-data"]["user-variables"] != null ? jObject["event-data"]["user-variables"].ToString(Formatting.None) : string.Empty;
            mailgunRequestPayload.Ip        = jObject["event-data"]["ip"] != null ? ( string )jObject["event-data"]["ip"] : string.Empty;
            mailgunRequestPayload.Url       = jObject["event-data"]["url"] != null ? ( string )jObject["event-data"]["url"] : string.Empty;
            mailgunRequestPayload.Recipient = jObject["event-data"]["recipient"] != null ? ( string )jObject["event-data"]["recipient"] : string.Empty;

            if (jObject["event-data"]["client-info"] != null)
            {
                mailgunRequestPayload.ClientName = jObject["event-data"]["client-info"]["client-name"] != null ? ( string )jObject["event-data"]["client-info"]["client-name"] : string.Empty;
                mailgunRequestPayload.ClientOs   = jObject["event-data"]["client-info"]["client-os"] != null ? ( string )jObject["event-data"]["client-info"]["client-os"] : string.Empty;
                mailgunRequestPayload.ClientType = jObject["event-data"]["client-info"]["client-type"] != null ? ( string )jObject["event-data"]["client-info"]["client-type"] : string.Empty;
                mailgunRequestPayload.DeviceType = jObject["event-data"]["client-info"]["device-type"] != null ? ( string )jObject["event-data"]["client-info"]["device-type"] : string.Empty;
            }

            if (jObject["event-data"]["user-variables"] != null && jObject["event-data"]["user-variables"]["X-Mailgun-Variables"] != null)
            {
                string mailgunVariables = HttpContext.Current.Server.UrlDecode(mailgunRequestPayload.XMailgunVariables);

                if (mailgunVariables.IsNotNullOrWhiteSpace())
                {
                    var mailgunLegacyVarDictionary = JsonConvert.DeserializeObject <Dictionary <string, string> >(mailgunVariables);
                    var mailgunVarDictionary       = JsonConvert.DeserializeObject <Dictionary <string, string> >(mailgunLegacyVarDictionary["X-Mailgun-Variables"]);

                    if (mailgunVarDictionary.ContainsKey("workflow_action_guid"))
                    {
                        mailgunRequestPayload.WorkflowActionGuid = mailgunVarDictionary["workflow_action_guid"];
                    }

                    if (mailgunVarDictionary.ContainsKey("communication_recipient_guid"))
                    {
                        mailgunRequestPayload.CommunicationRecipientGuid = mailgunVarDictionary["communication_recipient_guid"];
                    }
                }
            }

            if (jObject["event-data"]["delivery-status"] != null)
            {
                string description = jObject["event-data"]["delivery-status"]["description"] != null ? ( string )jObject["event-data"]["delivery-status"]["description"] : string.Empty;
                string message     = jObject["event-data"]["delivery-status"]["message"] != null ? ( string )jObject["event-data"]["delivery-status"]["message"] : string.Empty;
                mailgunRequestPayload.Description = description + message;
            }
        }

        ProcessRequest();
    }