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); }
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() }); }; }