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; })); }; }
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; }); }; }
public void TestGetSetDocs() { var service = new CouchDBService(); var toSet = new Data { value = "Hello world" }; var setId = service.Set(toSet); var getResult = service.Get<Data>(setId); Assert.AreEqual(toSet.value, getResult.value); var allTests = service.GetByDocType<Data>(getResult.docType).ToList(); Assert.IsTrue(allTests.Count() > 0); service.Delete(allTests); var notFound = service.Get<Data>(setId); Assert.IsNull(notFound); }
public void TestGetSetDocs() { var service = new CouchDBService(); var toSet = new Data { value = "Hello world" }; var setId = service.Set(toSet); var getResult = service.Get <Data>(setId); Assert.AreEqual(toSet.value, getResult.value); var allTests = service.GetByDocType <Data>(getResult.docType).ToList(); Assert.IsTrue(allTests.Count() > 0); service.Delete(allTests); var notFound = service.Get <Data>(setId); Assert.IsNull(notFound); }
public SubmissionModule() : base("api/submissions") { this.Post["/", true] = (_, cancel) => { return Task.Run<dynamic>(() => { var file = this.Request.Files.FirstOrDefault(); string filename = file.Name; string title = this.Request.Form.Title; string username = this.Context.CurrentUser.UserName; if (file == null || string.IsNullOrEmpty(filename) || string.IsNullOrEmpty(username)) return HttpStatusCode.BadRequest; if (title == null) title = filename; var cloudService = new SoundCloudService(); var response = cloudService.Upload(new UploadTrack() { Title = title, Filename = filename, Data = file.Value, }); db.Set(new AuthEvent() { At = DateTime.UtcNow, Username = username }); // Get the track id of the uploaded track int trackId = response.id; // Store custom meta information to database. if (trackId > 0) { CustomTrackMetaDto dto = new CustomTrackMetaDto(); dto.TrackId = trackId; dto.Username = username; // Add the meta information dto.SongTitle = this.Request.Form.SongTitle; dto.StageName = this.Request.Form.StageName; dto.Musicians = this.Request.Form.Musicians; dto.Composers = this.Request.Form.Composers; db.Set<CustomTrackMetaDto>(dto); } return HttpStatusCode.OK; }); }; this.Get["/", true] = (_, cancel) => { return Task.Run<dynamic>(() => { var cloudService = new SoundCloudService(); var token = cloudService.GetAccessToken(); var tracks = cloudService.GetTracks(token); // Convert SoundCloud Track into DTO object with relevant info Mapper.CreateMap<Track, TrackDto>() .ForMember(dest => dest.SoundCloudMeta, opt => opt.ResolveUsing<SoundCloudMetaResolver>()); var trackList = tracks.ToList(); List<TrackDto> dtoList = new List<TrackDto>(); for (int i = 0; i < trackList.Count; i++) { dtoList.Add(Mapper.Map<TrackDto>(trackList[i])); } // Get other track information stored in CouchDB var db = new CouchDBService(); for (int i = 0; i < dtoList.Count; i++) { TrackDto dto = dtoList[i]; // Add custom meta information CustomTrackMetaDto meta = null; CustomTrackMetaDto[] metaObjects = db.FindByTrackId<CustomTrackMetaDto>(dto.Id).ToArray(); if (metaObjects.Length > 0) meta = metaObjects[0]; dto.CustomTrackMeta = meta; } return Response.AsJson(dtoList, HttpStatusCode.OK); }); }; this.Get["/list", true] = (_, cancel) => { return Task.Run<dynamic>(() => { var cloudService = new SoundCloudService(); var token = cloudService.GetAccessToken(); var tracks = cloudService.GetTracks(token); // Convert SoundCloud Track into DTO object with relevant info Mapper.CreateMap<Track, TrackDto>() .ForMember(dest => dest.SoundCloudMeta, opt => opt.ResolveUsing<SoundCloudMetaResolver>()); var trackList = tracks.ToList(); List<TrackDto> dtoList = new List<TrackDto>(); foreach (var track in trackList) { var tra = Mapper.Map<TrackDto>(track); tra.Embed = Embedd(track.id, track.secret_token); dtoList.Add(tra); } // Get other track information stored in CouchDB var db = new CouchDBService(); for (int i = 0; i < dtoList.Count; i++) { TrackDto dto = dtoList[i]; // Add custom meta information CustomTrackMetaDto meta = null; CustomTrackMetaDto[] metaObjects = db.FindByTrackId<CustomTrackMetaDto>(dto.Id).ToArray(); if (metaObjects.Length > 0) meta = metaObjects[0]; dto.CustomTrackMeta = meta; } return Response.AsJson(dtoList, HttpStatusCode.OK); }); }; }
private void init() { db = new CouchDBService(); tokenService = new TokenService(db); }
public TokenService(CouchDBService db) { this.db = db; expiration = TimeSpan.FromDays(30); }
public SubmissionModule() : base("api/submissions") { this.Post["/", true] = (_, cancel) => { return(Task.Run <dynamic>(() => { var file = this.Request.Files.FirstOrDefault(); string filename = file.Name; string title = this.Request.Form.Title; string username = this.Context.CurrentUser.UserName; if (file == null || string.IsNullOrEmpty(filename) || string.IsNullOrEmpty(username)) { return HttpStatusCode.BadRequest; } if (title == null) { title = filename; } var cloudService = new SoundCloudService(); var response = cloudService.Upload(new UploadTrack() { Title = title, Filename = filename, Data = file.Value, }); db.Set(new AuthEvent() { At = DateTime.UtcNow, Username = username }); // Get the track id of the uploaded track int trackId = response.id; // Store custom meta information to database. if (trackId > 0) { CustomTrackMetaDto dto = new CustomTrackMetaDto(); dto.TrackId = trackId; dto.Username = username; // Add the meta information dto.SongTitle = this.Request.Form.SongTitle; dto.StageName = this.Request.Form.StageName; dto.Musicians = this.Request.Form.Musicians; dto.Composers = this.Request.Form.Composers; db.Set <CustomTrackMetaDto>(dto); } return HttpStatusCode.OK; })); }; this.Get["/", true] = (_, cancel) => { return(Task.Run <dynamic>(() => { var cloudService = new SoundCloudService(); var token = cloudService.GetAccessToken(); var tracks = cloudService.GetTracks(token); // Convert SoundCloud Track into DTO object with relevant info Mapper.CreateMap <Track, TrackDto>() .ForMember(dest => dest.SoundCloudMeta, opt => opt.ResolveUsing <SoundCloudMetaResolver>()); var trackList = tracks.ToList(); List <TrackDto> dtoList = new List <TrackDto>(); for (int i = 0; i < trackList.Count; i++) { dtoList.Add(Mapper.Map <TrackDto>(trackList[i])); } // Get other track information stored in CouchDB var db = new CouchDBService(); for (int i = 0; i < dtoList.Count; i++) { TrackDto dto = dtoList[i]; // Add custom meta information CustomTrackMetaDto meta = null; CustomTrackMetaDto[] metaObjects = db.FindByTrackId <CustomTrackMetaDto>(dto.Id).ToArray(); if (metaObjects.Length > 0) { meta = metaObjects[0]; } dto.CustomTrackMeta = meta; } return Response.AsJson(dtoList, HttpStatusCode.OK); })); }; this.Get["/list", true] = (_, cancel) => { return(Task.Run <dynamic>(() => { var cloudService = new SoundCloudService(); var token = cloudService.GetAccessToken(); var tracks = cloudService.GetTracks(token); // Convert SoundCloud Track into DTO object with relevant info Mapper.CreateMap <Track, TrackDto>() .ForMember(dest => dest.SoundCloudMeta, opt => opt.ResolveUsing <SoundCloudMetaResolver>()); var trackList = tracks.ToList(); List <TrackDto> dtoList = new List <TrackDto>(); foreach (var track in trackList) { var tra = Mapper.Map <TrackDto>(track); tra.Embed = Embedd(track.id, track.secret_token); dtoList.Add(tra); } // Get other track information stored in CouchDB var db = new CouchDBService(); for (int i = 0; i < dtoList.Count; i++) { TrackDto dto = dtoList[i]; // Add custom meta information CustomTrackMetaDto meta = null; CustomTrackMetaDto[] metaObjects = db.FindByTrackId <CustomTrackMetaDto>(dto.Id).ToArray(); if (metaObjects.Length > 0) { meta = metaObjects[0]; } dto.CustomTrackMeta = meta; } return Response.AsJson(dtoList, HttpStatusCode.OK); })); }; }