コード例 #1
0
        public MailingListController()
        {
            Post("/api/v1/mailing_list/subscribe", _ => {
                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameters(new[] { "email" }),
                    new ShouldBeValidEmail(),
                }, true);
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                var email = GetRequestStr("email");

                var existingSubscriber = MailingListSubscriber.FindBy("email", email);

                if (existingSubscriber == null)
                {
                    MailingListSubscriber.Create(email);
                }

                return(HttpResponse.Data(new JObject()
                {
                    ["status"] = "subscribed"
                }));
            });

            Delete("/api/v1/mailing_list/unsubscribe", _ => {
                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameters(new[] { "unsubscribe_key" })
                });
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                var subscriber = MailingListSubscriber.FindBy(
                    "unsubscribe_key", GetRequestStr("unsubscribe_key")
                    );
                subscriber?.Delete();

                return(HttpResponse.Data(new JObject()
                {
                    ["status"] = "unsubscribed"
                }));
            });
        }