using System.Collections.Generic; using Nancy; using Nancy.Metadata.Modules; using Nancy.Metadata.Swagger.Core; using Nancy.Metadata.Swagger.Fluent; using Nancy.Metadata.Swagger.Model; using Sony.Filtr.AdminAPI.ViewModels; using Sony.Filtr.Contracts.Entities; namespace Sony.Filtr.AdminAPI.Modules.EditorialPlaylist { public class PlaylistCategoryMetadataModule : MetadataModule { public PlaylistCategoryMetadataModule() { var tag = "Playlist Category"; Describe["GetPlaylistCategories"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get playlist categories for market", tag) .WithRequestParameter("countryCode", description: "market id") .WithDefaultResponse>()); Describe["AddPlaylistCategory"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Add a new playlist category in the market", tag) .WithRequestParameter("countryCode", description: "market id") .WithDefaultResponse() .WithResponse(HttpStatusCode.BadRequest, "Missing or invalid playlist category") ); Describe["SetPlaylistCategoryOrder"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Set the order of playlist categories in the market", tag) .WithRequestParameter("countryCode", description: "market id") .WithRequestModel() .WithDefaultResponse>() .WithResponse(HttpStatusCode.BadRequest, "Missing or invalid request parameter") ); Describe["GetPlaylistInCategory"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get playlist in playlist category", tag) .WithRequestParameter("id", description: "playlist category id") .WithDefaultResponse>() .WithResponse(HttpStatusCode.BadRequest, "Missing or invalid playlist category id") .WithResponse(HttpStatusCode.NotFound, "Specified playlist category does not exist")); Describe["UpdatePlaylistCategory"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Update the playlist category", tag) .WithRequestParameter("id", description: "playlist category id") .WithDefaultResponse() .WithResponse(HttpStatusCode.BadRequest, "Missing or invalid playlist category id or input model")); Describe["DeletePlaylistCategory"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Delete the specified playlist category", tag) .WithRequestParameter("id", description: "Playlist category id") .WithResponse(HttpStatusCode.NoContent, "Playlist category has been removed") .WithResponse(HttpStatusCode.BadRequest, "Missing or invalid playlist category id") .WithResponse(HttpStatusCode.NotFound, "Specified playlist category does not exist")); Describe["SetIconForPlaylistCategory"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Set icon for the specified playlist category", tag) .WithRequestParameter("id", description: "Playlist category id") .WithRequestParameter("icon", loc: "body", description: "The icon stream") .WithDefaultResponse()); Describe["GetCategoriesForPlaylist"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get the categories for a specific playlist", tag) .WithRequestParameter("id", description: "Playlist category id") .WithDefaultResponse>() .WithResponse(HttpStatusCode.BadRequest, "Missing or invalid playlist category id")); Describe["AddCategoriesForPlaylist"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Add more categories to the specific playlist", tag) .WithRequestParameter("id", description: "Playlist category id") .WithRequestModel() .WithDefaultResponse>() .WithResponse(HttpStatusCode.BadRequest, "Missing or invalid parameters.")); Describe["SetCategoriesForPlaylist"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Replace the existing categories for the specific playlist with the supplied categories", tag) .WithRequestParameter("id", description: "Playlist category id") .WithRequestModel() .WithDefaultResponse>() .WithResponse(HttpStatusCode.BadRequest, "Missing or invalid parameters")); } } }