Exemplo n.º 1
0
    private MailchimpResponse MailchimpRequest(string url, string method, string body, string apiKey)
    {
        var logTimeStamp = DateTime.Now;

        Kit.Log.Add("Mailchimp controller", logTimeStamp + " - will send " + method + " request to " + url + " with body " + body);

        String encodedApiKey = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes("anystring" + ":" + apiKey));

        var httpMethod     = new HttpMethod(method.ToUpper());
        var requestMessage = new HttpRequestMessage(httpMethod, url);

        requestMessage.Headers.Add("Authorization", "Basic " + encodedApiKey);

        if (method != "GET")
        {
            requestMessage.Content = new StringContent(body);
            requestMessage.Content.Headers.Remove("Content-Type");
            requestMessage.Content.Headers.Add("Content-Type", "application/json; charset=utf-8");
        }

        var responseMessage = client.SendAsync(requestMessage).Result;
        var response        = responseMessage.Content.ReadAsStringAsync().Result;

        var r = new MailchimpResponse()
        {
            StatusCode = responseMessage.StatusCode,
            Response   = response
        };

        Kit.Log.Add("Mailchimp controller", logTimeStamp + " - got response: " + r.StatusCode + " with content " + r.Response);
        return(r);
    }
Exemplo n.º 2
0
        public HomeModule()
        {
            Get["/"] = p => {
                var configuration = Nancy.TinyIoc.TinyIoCContainer.Current.Resolve <ServantConfiguration>();

                var latestErrors = EventLogHelper.GetByDateTimeDescending(5).ToList();
                latestErrors = EventLogHelper.AttachSite(latestErrors, Page.Sites);
                Model.UnhandledExceptions = latestErrors;
                Model.HaveSeenNewsletter  = configuration.HaveSeenNewsletter;
                return(View["Index", Model]);
            };

            Post["/subscribetonewsletter"] = p => {
                var email     = Request.Form.Email;
                var firstname = Request.Form.Firstname;
                var lastname  = Request.Form.Lastname;

                try
                {
                    new System.Net.Mail.MailAddress(email);
                }
                catch
                {
                    AddPropertyError("email", "Looks like the email is not valid.");
                }

                var serializer = new Nancy.Json.JavaScriptSerializer();

                if (HasErrors)
                {
                    return(new { Type = MessageType.Error.ToString(), Errors = serializer.Serialize(Model.Errors) });;
                }

                var response = MailchimpHelper.Subscribe(email, firstname, lastname);

                if (response != "true")
                {
                    MailchimpResponse result = serializer.Deserialize <MailchimpResponse>(response);

                    if (result.Code == 214)
                    {
                        SetNewsletterRead();
                    }

                    if (result.Code == 502)
                    {
                        AddPropertyError("email", "Looks like the email is not valid.");
                        return(new { Type = MessageType.Error, Errors = serializer.Serialize(Model.Errors) });
                    }

                    return(new { Message = result.Error, Type = MessageType.Error.ToString() });
                }

                SetNewsletterRead();

                return(new { Message = response, Type = MessageType.Success.ToString() });
            };
        }