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 ReleaseModule : BaseModule { public ReleaseModule(SettingsManager settingsManager, ApplicationInstanceManager applicationInstanceManager) : base(applicationInstanceManager) { // Spotify Get["GetSpotifyReleasesSinglePlaylist", "/{countryCode}/releasePlaylist/singles"] = parameters => { return GetSpotifyPlaylistSetting(settingsManager, "ReleasePlaylistUrl"); }; Post["SetSpotifyReleasesSinglePlaylist", "/{countryCode}/releasePlaylist/singles"] = parameters => { return SetSpotifyPlaylistSetting(settingsManager, "ReleasePlaylistUrl"); }; Get["GetSpotifyReleasesAlbumPlaylist", "/{countryCode}/releasePlaylist/albums"] = parameters => { return GetSpotifyPlaylistSetting(settingsManager, "ReleaseAlbumPlaylistUrl"); }; Post["SetSpotifyReleasesAlbumPlaylist", "/{countryCode}/releasePlaylist/albums"] = parameters => { return SetSpotifyPlaylistSetting(settingsManager, "ReleaseAlbumPlaylistUrl"); }; // Deezer Get["GetDeezerReleasesSinglePlaylist","/{countryCode}/deezer/releasePlaylist/singles"] = parameters => { return GetDeezerPlaylistSetting(settingsManager, "DeezerReleaseSinglePlaylistId"); }; Post["SetDeezerReleasesSinglePlaylist", "/{countryCode}/deezer/releasePlaylist/singles"] = parameters => { return SetDeezerPlaylistSetting(settingsManager, "DeezerReleaseSinglePlaylistId"); }; Get["GetDeezerReleasesAlbumPlaylist", "/{countryCode}/deezer/releasePlaylist/albums"] = parameters => { return GetDeezerPlaylistSetting(settingsManager, "DeezerReleaseAlbumPlaylistId"); }; Post["SetDeezerReleasesAlbumPlaylist", "/{countryCode}/deezer/releasePlaylist/albums"] = parameters => { return SetDeezerPlaylistSetting(settingsManager, "DeezerReleaseAlbumPlaylistId"); }; } private Response SetSpotifyPlaylistSetting(SettingsManager settingsManager, string setting) { var releaseLink = this.Bind(); if (releaseLink == null) return HttpStatusCode.BadRequest; if (string.IsNullOrWhiteSpace(releaseLink.SpotifyLink)) { settingsManager.SetStringSetting(setting, string.Empty, CurrentApplication); releaseLink.SpotifyLink = string.Empty; return Response.AsJson(releaseLink); } var releasePlaylistSpotifyLink = new SpotifyLink(releaseLink.SpotifyLink); if (!releasePlaylistSpotifyLink.IsPlaylist()) return HttpStatusCode.BadRequest; settingsManager.SetStringSetting(setting, releasePlaylistSpotifyLink.Uri, CurrentApplication); return Response.AsJson(releaseLink); } private Response GetSpotifyPlaylistSetting(SettingsManager settingsManager, string setting) { var releasePlaylistUrl = settingsManager.GetStringSetting(setting, CurrentApplication); var releaseLinkViewModel = new SpotifyUriViewModel(); releaseLinkViewModel.SpotifyLink = releasePlaylistUrl; return Response.AsJson(releaseLinkViewModel); } private Response SetDeezerPlaylistSetting(SettingsManager settingsManager, string setting) { var releaseLink = this.Bind(); if (releaseLink == null) return HttpStatusCode.BadRequest; settingsManager.SetIntSetting(setting, releaseLink.DeezerPlaylistId, CurrentApplication); return Response.AsJson(releaseLink); } private Response GetDeezerPlaylistSetting(SettingsManager settingsManager, string setting) { var releasePlaylistId = settingsManager.GetIntSetting(setting, CurrentApplication); var releaseLinkViewModel = new DeezerPlaylistIdViewModel(); releaseLinkViewModel.DeezerPlaylistId = releasePlaylistId; return Response.AsJson(releaseLinkViewModel); } } }