using System.Linq; using Nancy.Metadata.Modules; using Nancy.Metadata.Swagger.Core; using Nancy.Metadata.Swagger.Fluent; using Sony.Filtr.AdminAPI.ViewModels.Graph; namespace Sony.Filtr.AdminAPI.Modules { public class PlaylistGraphMetadataModule : MetadataModule { public PlaylistGraphMetadataModule() { var tag = "Playlist graphs"; Describe["PlaylistStreamsGraph"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get the number of streams from the playlist during the specified time period", tag) .WithRequestParameter("playlistUri", description: "Spotify uri for the playlist", loc: "query", required: true) .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithDefaultResponse()); Describe["PlaylistUsersGraph"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get the number of unique users who have streamed from the playlist during the specified time period", tag) .WithRequestParameter("playlistUri", description: "Spotify uri for the playlist", loc: "query", required: true) .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithDefaultResponse()); Describe["PlaylistStreamsPerUsersGraph"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get the number of streams divided by unique users who have streamed from the playlist during the specified time period", tag) .WithRequestParameter("playlistUri", description: "Spotify uri for the playlist", loc: "query", required: true) .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithDefaultResponse()); Describe["PlaylistFollowersGraph"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get the number of followers for the playlist during the specified time period", tag) .WithRequestParameter("playlistUri", description: "Spotify uri for the playlist", loc: "query", required: true) .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithDefaultResponse()); Describe["PlaylistBrowseGraph"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get the position of the playlist in browse categories during the specified time period", tag) .WithRequestParameter("playlistUri", description: "Spotify uri for the playlist", loc: "query", required: true) .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithDefaultResponse()); Describe["PlaylistSonyPercentage"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get total track amount, sony track amount and sony track percentage of the playlist during the specified time period", tag) .WithRequestParameter("playlistUri", description: "Spotify uri for the playlist", loc: "query", required: true) .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithDefaultResponse()); Describe["MarketStreamsGraph"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Gets streams for the defined market, for all days specified. Divided into streams from all playlists, and streams from local playlists", tag) .WithRequestParameter("countryCode", description: "Market Id") .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithDefaultResponse()); Describe["MarketUsersGraph"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Gets users for the defined market, for all days specified. Divided into users from all playlists, and users from local playlists", tag) .WithRequestParameter("countryCode", description: "Market Id") .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithDefaultResponse()); Describe["MarketStreamsPerUserGraph"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Gets streams per user for the defined market, for all days specified. Divided into users and streams from all playlists, and from local playlists", tag) .WithRequestParameter("countryCode", description: "Market Id") .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithDefaultResponse()); Describe["MarketFollowersGraph"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get the number of followers for the playlists in the defined market during the specified time period", tag) .WithRequestParameter("countryCode", description: "Market Id") .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithDefaultResponse()); } } }