using System.Linq; using Nancy; using Nancy.ModelBinding; using Sony.Filtr.AdminAPI.ViewModels; using Sony.Filtr.Applications; using Sony.Filtr.Contracts.Entities; using Sony.Filtr.Core.Settings; namespace Sony.Filtr.AdminAPI.Modules.PublicData { public class PromotedModule : BaseModule { public PromotedModule(SettingsManager settingsManager, ApplicationInstanceManager applicationInstanceManager) : base(applicationInstanceManager) { Get["GetPromotedPlaylist", "/{countryCode}/promotedPlaylist"] = parameters => { var releasePlaylistUrl = settingsManager.GetStringSetting("PromotedTracksPlaylist", CurrentApplication); var viewModel = new SpotifyUriViewModel() { SpotifyLink = releasePlaylistUrl }; return Response.AsJson(viewModel); }; Post["SetPromotedPlaylist", "/{countryCode}/promotedPlaylist"] = parameters => { var spotifyUri = this.Bind(); if (spotifyUri == null) return HttpStatusCode.BadRequest; if (string.IsNullOrWhiteSpace(spotifyUri.SpotifyLink)) { settingsManager.SetStringSetting("PromotedTracksPlaylist", string.Empty, CurrentApplication); spotifyUri.SpotifyLink = string.Empty; return Response.AsJson(spotifyUri); } var releasePlaylistSpotifyLink = new SpotifyLink(spotifyUri.SpotifyLink); if (!releasePlaylistSpotifyLink.IsPlaylist()) return HttpStatusCode.BadRequest; settingsManager.SetStringSetting("PromotedTracksPlaylist", releasePlaylistSpotifyLink.Uri, CurrentApplication); return Response.AsJson(spotifyUri); }; } } }