using System; using System.Collections.Generic; using Nancy; using Nancy.Metadata.Modules; using Nancy.Metadata.Swagger.Core; using Nancy.Metadata.Swagger.Fluent; using Sony.Filtr.AdminAPI.ViewModels; using Sony.Filtr.Core.SpotifyCharts.Data; namespace Sony.Filtr.AdminAPI.Modules.PlaylistContainer { public class PlaylistContainerMetadataModule : MetadataModule { public PlaylistContainerMetadataModule() { var tag = "Playlist container"; Describe["GetLinkedPlaylists"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get playlists and services connected to a specified playlist.", tag) .WithRequestParameter("playlistId", type: "string", description: "The playlist Id to get connected playlists for.", loc: "query", required: true) .WithRequestParameter("musicServiceId", type: "int", description: "The music service id.", loc: "query", required: true) .WithDefaultResponse()); Describe["AddLinkedPlaylists"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Connect a playlist to an existing playlist.", tag) .WithRequestParameter("sourcePlaylistId", type: "string", description: "\"Source\" playlist to connect a playlist to.", loc: "query", required: true) .WithRequestParameter("sourceMusicServiceId", type: "int", description: "The music service id of the \"source\" playlist.", loc: "query", required: true) .WithRequestParameter("linkedPlaylistId", type: "string", description: "Playlist id for a playlist to link to the source playlist.", loc: "query", required: true) .WithRequestParameter("linkedMusicServiceId", type: "int", description: "The music service id for the linked playlist.", loc: "query", required: true) .WithDefaultResponse()); Describe["DeleteLinkedPlaylist"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Remove a playlist from a playlist container.", tag) .WithRequestParameter("playlistContainerId", type: "int", description: "Playlist container id", loc: "query", required: true) .WithRequestParameter("playlistId", type: "string", description: "Playlist id for the playlist to delete/unlink.", loc: "query", required: true) .WithRequestParameter("musicServiceId", type: "int", description: "The music service id for the playlist to delete/unlink.", loc: "query", required: true) .WithDefaultResponse()); Describe["UpdatePlaylistContainer"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Update a playlist containers metadata.", tag) .WithRequestModel() .WithRequestParameter("id", type: "int", description: "Playlist container id", loc: "path", required: true) .WithDefaultResponse()); Describe["GetOrCreatePlaylistContainer"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get or create playlist container.", tag) .WithRequestParameter("playlistId", type: "string", description: "Playlist id for the playlist to get or create container.", loc: "query", required: true) .WithRequestParameter("musicServiceId", type: "int", description: "The music service id for the playlist to get or create container.", loc: "query", required: true) .WithDefaultResponse()); Describe["SetPlaylistMarket"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Set a market for a specific playlist on a specific music service.", tag) .WithRequestModel() .WithResponse(HttpStatusCode.BadRequest, "Request model is not valid (either missing completely or without playlist, musicserviceid or market)") .WithDefaultResponse()); } } }