using Nancy; using Nancy.ModelBinding; using Sony.Filtr.Applications; using Sony.Filtr.Contracts.Entities; using Sony.Filtr.Core.SpotifyUserCountries; namespace Sony.Filtr.AdminAPI.Modules.SpotifySpecific { public class SpotifyUserCountryModule : BaseModule { public SpotifyUserCountryModule(SpotifyUserCountryManager spotifyUserCountryManager, ApplicationInstanceManager applicationInstanceManager) : base(applicationInstanceManager) { Get["GetSpotifyUserCountries", "/SpotifyUserCountries"] = parameters => { var users = spotifyUserCountryManager.GetSpotifyUsersCountry(); return Response.AsJson(users); }; Get["GetSingleSpotifyUserCountryMapping", "/SpotifyUserCountries/{username}"] = parameters => { string username = (string)parameters.username; if (string.IsNullOrWhiteSpace(username)) return HttpStatusCode.BadRequest; var spotifyUserCountry = spotifyUserCountryManager.GetSpotifyUserCountry(username); if (spotifyUserCountry == null) return HttpStatusCode.NotFound; return Response.AsJson(spotifyUserCountry); }; Post["AddSpotifyUserCountryMapping", "/SpotifyUserCountries/"] = parameters => { var spotifyUserCountry = this.Bind("ID"); if (string.IsNullOrWhiteSpace(spotifyUserCountry.SpotifyUserName)) return HttpStatusCode.BadRequest; var existing = spotifyUserCountryManager.GetSpotifyUserCountry(spotifyUserCountry.SpotifyUserName); if (existing != null) spotifyUserCountry.ID = existing.ID; spotifyUserCountry.CountryCode = spotifyUserCountry.CountryCode.ToLowerInvariant(); spotifyUserCountry = spotifyUserCountryManager.SaveSpotifyUsersCountry(spotifyUserCountry); return Response.AsJson(spotifyUserCountry); }; Put["UpdateSpotifyUserCountryMapping", "/SpotifyUserCountries/{username}"] = parameters => { string username = (string)parameters.username; if (string.IsNullOrWhiteSpace(username)) return HttpStatusCode.BadRequest; var spotifyUserCountry = this.Bind(); var existing = spotifyUserCountryManager.GetSpotifyUserCountry(username); if (existing != null) spotifyUserCountry.ID = existing.ID; spotifyUserCountry.SpotifyUserName = username; spotifyUserCountry.CountryCode = spotifyUserCountry.CountryCode.ToLowerInvariant(); spotifyUserCountry = spotifyUserCountryManager.SaveSpotifyUsersCountry(spotifyUserCountry); return Response.AsJson(spotifyUserCountry); }; Delete["DeleteSpotifyUserCountryMappingByUsername", "/SpotifyUserCountries/{username}"] = parameters => { string username = (string)parameters.username; if (string.IsNullOrWhiteSpace(username)) return HttpStatusCode.BadRequest; var existing = spotifyUserCountryManager.GetSpotifyUserCountry(username); if (existing == null) return HttpStatusCode.NotFound; spotifyUserCountryManager.DeleteSpotifyUsersCountry(existing); return HttpStatusCode.NoContent; }; Delete["DeleteSpotifyUserCountryMapping", "/SpotifyUserCountries/"] = parameters => { var spotifyUserCountry = this.Bind(); if (string.IsNullOrWhiteSpace(spotifyUserCountry.SpotifyUserName)) return HttpStatusCode.BadRequest; var existing = spotifyUserCountryManager.GetSpotifyUserCountry(spotifyUserCountry.SpotifyUserName); if (existing == null) return HttpStatusCode.NotFound; spotifyUserCountryManager.DeleteSpotifyUsersCountry(existing); return HttpStatusCode.NoContent; }; } } }