using System.Linq; using Nancy; using Nancy.ModelBinding; using Sony.Filtr.AdminAPI.BusinessLogic; using Sony.Filtr.AdminAPI.Config; using Sony.Filtr.Contracts.Abstractions; using Sony.Filtr.Contracts.Entities; using Sony.Filtr.Playlists; namespace Sony.Filtr.AdminAPI.Modules { public class IgnoredPlaylistModule : BaseModule { public IgnoredPlaylistModule(IApplicationInstanceManager applicationInstanceManager, IgnoredPlaylistsManager ignoredPlaylistsManager, MusicServicePlaylistReferenceValidator musicServicePlaylistReferenceValidator) : base(applicationInstanceManager) { Get["GetIgnoredPlaylists", "/playlists/ignorelist", true] = async (parameter, token) => { var ignoredPlaylists = await ignoredPlaylistsManager.GetIgnoredPlaylistsAsync(); return Response.AsJson(ignoredPlaylists); }; Put["AddIgnoredPlaylist", "/playlists/ignorelist", true] = async (parameter, token) => { var playlist = this.Bind(); var valid = await musicServicePlaylistReferenceValidator.IsValidMusicServicePlaylistReferenceAsync(playlist); if (!valid) throw new NancyStatusException(HttpStatusCode.BadRequest, "Missing or invalid Playlist Id or Music Service Id"); await ignoredPlaylistsManager.AddIgnoredPlaylistAsync(playlist); return Response.AsJson(playlist); }; Delete["DeleteIgnoredPlaylist", "/playlists/ignorelist", true] = async (parameter, token) => { var playlist = this.Bind(); var valid = await musicServicePlaylistReferenceValidator.IsValidMusicServicePlaylistReferenceAsync(playlist); if (!valid) throw new NancyStatusException(HttpStatusCode.BadRequest, "Missing or invalid Playlist Id or Music Service Id"); await ignoredPlaylistsManager.DeleteIgnoredPlaylistAsync(playlist); return HttpStatusCode.NoContent; }; } } }