using System.Linq; using Nancy; using Nancy.Metadata.Modules; using Nancy.Metadata.Swagger.Core; using Nancy.Metadata.Swagger.Fluent; using Sony.Filtr.Contracts.Entities; namespace Sony.Filtr.AdminAPI.Modules { public class StarredTrackMetadataModule : MetadataModule { public StarredTrackMetadataModule() { var tag = "Starred Content"; Describe["GetStarredTracks"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get starred content for user.", tag) .WithRequestParameter("userId", type: "string", description: "User id", loc: "path", required: true) .WithRequestParameter("limit", type: "string", description: "Limit", loc: "query", required: false) .WithRequestParameter("offset", type: "string", description: "Offset", loc: "query", required: false) .WithDefaultResponse>()); Describe["AddStarredTrack"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get search result history for user.", tag) .WithRequestParameter("userId", type: "string", description: "User id", loc: "path", required: true) .WithRequestModel() .WithResponse(HttpStatusCode.BadRequest, "Missing content or user id") .WithResponse(HttpStatusCode.Accepted, "The content has been starred")); Describe["DeleteStarredTrack"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Remove the content as starred for the user", tag) .WithRequestParameter("userId", type: "string", description: "User id", loc: "path", required: true) .WithRequestParameter("uri", type: "string", description:"Uri of content", loc: "query", required:true) .WithResponse(HttpStatusCode.BadRequest, "Missing content or user id") .WithResponse(HttpStatusCode.NoContent, "The content is no longer starred")); } } }