using Nancy; using Nancy.Metadata.Modules; using Nancy.Metadata.Swagger.Core; using Nancy.Metadata.Swagger.Fluent; using Sony.Filtr.AdminAPI.ViewModels.NewMusicFriday; using Sony.Filtr.Contracts.Entities; using System.Collections.Generic; namespace Sony.Filtr.AdminAPI.Modules { public class NewMusicFridayMetadataModule : MetadataModule { public NewMusicFridayMetadataModule() { const string tag = "New Music Friday"; Describe["GetSpotifyTracksForFriday"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get tracklists for specified Friday with fallback to latest", tag) .WithRequestParameter("market", description: "Country code of market. Falls back to any market if left unspecified", loc: "query", required: false) .WithRequestParameter("date", description: "Date of Friday", loc: "query", required: false) .WithRequestParameter("limit", description: "Pagination limit (default 100)", loc: "query", required: false) .WithRequestParameter("offset", description: "Pagination offset (default 0)", loc: "query", required: false) .WithDefaultResponse>() ); Describe["AddSpotifyNewMusicFridayPlaylist"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Add a playlist for New Music Friday tracking", tag) .WithRequestModel() .WithDefaultResponse() .WithResponse(HttpStatusCode.BadRequest, "Invalid format of model") .WithResponse(HttpStatusCode.NotFound, "Specified playlist could not be verified against Spotify's API") .WithResponse(HttpStatusCode.NoContent, "The specified resource has been removed") ); Describe["GetAllAvailableSpotifyNewMusicFridays"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get all Fridays which have processed data associated with them", tag) .WithDefaultResponse>()); Describe["GetSpotifyPlaylists"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get playlist metadata for NMF playlists", tag) .WithDefaultResponse>()); } } }