public SpamModule() : base("api/spam") { this.Post["/", true] = (_, cancel) => { return Task.Run<dynamic>(() => { var file = this.Request.Files.FirstOrDefault(); string data; using (StreamReader sr = new StreamReader(file.Value)) { data = sr.ReadToEnd(); } string username = this.Context.CurrentUser.UserName; bool isValid = IsValidSpamUser(username); var db = new CouchDBService(); var tokens = new TokenService(db); string subject = this.Request.Form.subject; string body = this.Request.Form.body; foreach (var email in GetValidEmails(data, username, isValid)) { var modBody = InsertLink(body, email, tokens); MailgunService.SendMail(email, subject, modBody); } return HttpStatusCode.OK; }); }; }
private string InsertLink(string body, string email, TokenService tokens) { if (body.IndexOf("!!link!!") != -1) { var token = tokens.Login(email); var combine = string.Format("{0}!{1}", email, token); var link = string.Format(@"<a href=""{0}/#/?token={1}"">your secret key</a>", this.Request.Url.SiteBase, combine); return body.Replace("!!link!!", link) + "<br><br> Sent on behalf of " + email; } return body; }
public LoginModule() : base("/api/login") { var db = new CouchDB.CouchDBService(); var tokenService = new TokenService(db); Post["/"] = ctx => { string username; var dto = this.Bind<LoginRequestDto>(); username = dto.Username; var validationResponse = ValidateUsername(username); if (validationResponse != null) return validationResponse; var token = tokenService.Login(username); var combine = string.Format("{0}!{1}", username, token); MailgunService.SendMail(username, "The unicorn says hi!", string.Format(File.ReadAllText(Path.Combine(AssemblyDirectory, "Mailing\\LoginMailResponse.txt")), this.Request.Url.SiteBase, combine)); return HttpStatusCode.OK; }; }
private void init() { db = new CouchDBService(); tokenService = new TokenService(db); }