private void ProcessEvent(EventRow evt, Dictionary<string,string> customParams) { MailEvent mailEvent; switch(evt.@event) { case "processed": mailEvent = new MailProcessedEvent(evt.email, evt.category); break; case "deferred": mailEvent = new MailDeferredEvent(evt.email, evt.response, evt.attempt.Value, evt.category); break; case "delivered": mailEvent = new MailDeliveredEvent(evt.email, evt.response, evt.category); break; case "open": mailEvent = new MailOpenedEvent(evt.email, evt.category); break; case "click": mailEvent = new MailClickedEvent(evt.email, evt.url, evt.category); break; case "bounce": mailEvent = new MailBounceEvent(evt.email, evt.status, evt.reason, evt.type, evt.category); break; case "drop": mailEvent = new MailDroppedEvent(evt.email, evt.reason, evt.category); break; case "spam": mailEvent = new MailReportedSpamEvent(evt.email, evt.category); break; case "unsubscribe": mailEvent = new MailUnsubscribedEvent(evt.email, evt.category); break; default: MailingEngine.EventHooksInternal.FireParseEventError(evt); throw new ArgumentException("UnrecognizedEvent: " + evt.@event); } mailEvent.CustomParams = customParams; MailingEngine.EventHooksInternal.FireMailEvent(mailEvent); }
public void ProcessEvent(EventRow row) { var req = Request; var custom = req.Params.AllKeys.Where(k => !_eventParameters.Contains(k)).ToDictionary(k => k, k => req.Params[k]); ProcessEvent(row, custom); }