using System.Collections.Generic; using System.Linq; using Nancy.Metadata.Modules; using Nancy.Metadata.Swagger.Core; using Nancy.Metadata.Swagger.Fluent; using Sony.Filtr.Core.SpotifyCharts.Data; namespace Sony.Filtr.AdminAPI.Modules.SpotifySpecific { public class SpotifyChartsMetadataModule : MetadataModule { public SpotifyChartsMetadataModule() { var tag = "Spotify Charts"; Describe["GetSpotifyTrackChartSummary"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get summary of chart positions in all available chart types for a track, divided by region", tag) .WithRequestParameter("isrc") .WithDefaultResponse>>()); Describe["GetChartInfoForTrack"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get peak (earliest and latest), first, latest and current positions for one track in one chart (market can be set to \"global\" for global charts).", tag) .WithRequestParameter("isrc", loc: "query", required: true) .WithRequestParameter("market", loc: "query", required: true) .WithRequestParameter("listType", loc: "query", required: true, description: "Supported list types: \"regional\" and \"viral\"") .WithRequestParameter("timeWindow", loc: "query", required: true, description: "Supported time windows: \"daily\", \"weekly\"") .WithDefaultResponse>>()); Describe["GetSpotifyChartsData"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get the specified chart with all tracks and their position.", tag) .WithRequestParameter("market", loc: "query", description: "Get track by specified country and use for IsSony.", required: false) .WithRequestParameter("chartMarket", loc: "query", description: "Get the chart for the specified market", required: true) .WithRequestParameter("listType", loc: "query", required: true, description: "Supported list types: \"regional\" and \"viral\"") .WithRequestParameter("timeWindow", loc: "query", required: true, description: "Supported time windows: \"daily\", \"weekly\"") .WithRequestParameter("date", loc: "query", required: true, description: "Date for chart") .WithDefaultResponse()); Describe["GetSpotifyChartsChartTypes"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get available charts.", tag) .WithRequestParameter("market", loc: "query", required: false) .WithRequestParameter("listType", loc: "query", required: false, description: "Supported list types: \"regional\" and \"viral\"") .WithRequestParameter("timeWindow", loc: "query", required: false, description: "Supported time windows: \"daily\", \"weekly\"") .WithDefaultResponse>>()); } } }