Swagger docs

This commit is contained in:
Kun Deng
2022-09-05 16:58:10 -04:00
parent 664b0d520b
commit 38c056cc99
13 changed files with 83 additions and 35 deletions
+2 -2
View File
@@ -39,7 +39,7 @@ namespace Icarus.Controllers.V1
#region HTTP Routes
[HttpGet]
public IActionResult Get()
public IActionResult GetAlbums()
{
List<Album> albums = new List<Album>();
@@ -54,7 +54,7 @@ namespace Icarus.Controllers.V1
}
[HttpGet("{id}")]
public IActionResult Get(int id)
public IActionResult GetAlbum(int id)
{
Album album = new Album
{
+2 -2
View File
@@ -38,7 +38,7 @@ namespace Icarus.Controllers.V1
#region HTTP Routes
[HttpGet]
public IActionResult Get()
public IActionResult GetArtists()
{
var artistContext = new ArtistContext(_connectionString);
@@ -51,7 +51,7 @@ namespace Icarus.Controllers.V1
}
[HttpGet("{id}")]
public IActionResult Get(int id)
public IActionResult GetArtist(int id)
{
if (!IsTokenValid("read:artists"))
{
+2
View File
@@ -17,6 +17,7 @@ namespace Icarus.Controllers.V1
#region Methods
[ApiExplorerSettings(IgnoreApi = true)]
protected string ParseBearerTokenFromHeader()
{
var token = string.Empty;
@@ -37,6 +38,7 @@ namespace Icarus.Controllers.V1
return token;
}
[ApiExplorerSettings(IgnoreApi = true)]
protected bool IsTokenValid(string scope)
{
var token = ParseBearerTokenFromHeader();
+4 -3
View File
@@ -35,7 +35,8 @@ namespace Icarus.Controllers.V1
#region HTTP Routes
public IActionResult Get()
[HttpGet]
public IActionResult GetCoverArts()
{
var coverArtContext = new CoverArtContext(_connectionString);
@@ -54,7 +55,7 @@ namespace Icarus.Controllers.V1
}
[HttpGet("{id}")]
public async Task<IActionResult> Get(int id)
public IActionResult GetCoverArt(int id)
{
var coverArt = new CoverArt { CoverArtID = id };
@@ -65,7 +66,7 @@ namespace Icarus.Controllers.V1
if (coverArt != null)
{
_logger.LogInformation("Found cover art record");
var coverArtBytes = await System.IO.File.ReadAllBytesAsync(
var coverArtBytes = System.IO.File.ReadAllBytes(
coverArt.ImagePath);
return File(coverArtBytes, "application/x-msdownload",
+2 -2
View File
@@ -39,7 +39,7 @@ namespace Icarus.Controllers.V1
#region HTTP Routes
[HttpGet]
public IActionResult Get()
public IActionResult RetrieveGenres()
{
var genres = new List<Genre>();
@@ -54,7 +54,7 @@ namespace Icarus.Controllers.V1
}
[HttpGet("{id}")]
public IActionResult Get(int id)
public IActionResult RetrieveGenre(int id)
{
var genre = new Genre
{
+2 -1
View File
@@ -38,7 +38,8 @@ namespace Icarus.Controllers.V1
#region HTTP endpoints
public IActionResult Post([FromBody] User user)
[HttpPost]
public IActionResult Login([FromBody] User user)
{
var context = new UserContext(_connectionString);
+1 -1
View File
@@ -37,7 +37,7 @@ namespace Icarus.Controllers.V1
#endregion
[HttpPost]
public IActionResult Post([FromBody] User user)
public IActionResult RegisterUser([FromBody] User user)
{
PasswordEncryption pe = new PasswordEncryption();
user.Password = pe.HashPassword(user);
+3 -3
View File
@@ -48,7 +48,7 @@ namespace Icarus.Controllers.V1
[HttpGet]
public IActionResult Get()
public IActionResult RetrieveSongs()
{
List<Song> songs = new List<Song>();
Console.WriteLine("Attemtping to retrieve songs");
@@ -65,7 +65,7 @@ namespace Icarus.Controllers.V1
}
[HttpGet("{id}")]
public IActionResult Get(int id)
public IActionResult RetrieveSong(int id)
{
var context = new SongContext(_connectionString);
@@ -81,7 +81,7 @@ namespace Icarus.Controllers.V1
}
[HttpPut("{id}")]
public IActionResult Put(int id, [FromBody] Song song)
public IActionResult UpdateSong(int id, [FromBody] Song song)
{
var context = new SongContext(_connectionString);
+20 -18
View File
@@ -48,13 +48,13 @@ namespace Icarus.Controllers.V1
[HttpGet("download/{id}")]
[Route("private-scoped")]
public async Task<IActionResult> Get(int id)
// [Route("private-scoped")]
public IActionResult Download(int id)
{
var songContext = new SongContext(_connectionString);
var songMetaData = songContext.RetrieveRecord(new Song { SongID = id});
var song = await _songMgr.RetrieveSong(songMetaData);
var song = _songMgr.RetrieveSong(songMetaData).Result;
return File(song.Data, "application/x-msdownload", songMetaData.Filename);
}
@@ -72,8 +72,9 @@ namespace Icarus.Controllers.V1
// Cover art
//
[HttpPost("upload"), DisableRequestSizeLimit]
[Route("private-scoped")]
public IActionResult Post([FromForm(Name = "file")] List<IFormFile> songData)
// [ConflictingActionsResolver]
// [Route("private-scoped")]
public IActionResult Upload([FromForm(Name = "file")] List<IFormFile> songData)
{
try
{
@@ -109,8 +110,9 @@ namespace Icarus.Controllers.V1
// as well as the cover art
//
[HttpPost("upload/with/data")]
[Route("private-scoped")]
public IActionResult Post ([FromForm] UploadSongWithDataForm up)
// [ConflictingActionsResolver]
// [Route("private-scoped")]
public IActionResult UploadWithData([FromForm] UploadSongWithDataForm up)
{
try
{
@@ -131,7 +133,7 @@ namespace Icarus.Controllers.V1
}
[HttpDelete("delete/{id}")]
public IActionResult Delete(int id)
public IActionResult DeleteSong(int id)
{
var songContext = new SongContext(_connectionString);
@@ -156,15 +158,15 @@ namespace Icarus.Controllers.V1
}
public class UploadSongWithDataForm
{
[FromForm(Name = "file")]
public IFormFile SongData { get; set; }
// TODO: Think about making this optional and if it is not provided, use the stock cover art
[FromForm(Name = "cover")]
public IFormFile CoverArtData { get; set; }
[FromForm(Name = "metadata")]
public string SongFile { get; set; }
}
public class UploadSongWithDataForm
{
[FromForm(Name = "file")]
public IFormFile SongData { get; set; }
// TODO: Think about making this optional and if it is not provided, use the stock cover art
[FromForm(Name = "cover")]
public IFormFile CoverArtData { get; set; }
[FromForm(Name = "metadata")]
public string SongFile { get; set; }
}
}
}
+2 -1
View File
@@ -44,8 +44,9 @@ namespace Icarus.Controllers.V1
#region HTTP endpoints
// [HttpGet]
[HttpGet("{id}")]
public async Task<IActionResult> Get(int id)
public async Task<IActionResult> StreamSong(int id)
{
var context = new SongContext(_config.GetConnectionString("DefaultConnection"));