switched to use the problemdetails class when responding instead of custom errorresponse class

This commit is contained in:
StevanFreeborn
2022-06-21 11:50:54 -05:00
parent 920ef40609
commit f22960f0ef
5 changed files with 28 additions and 25 deletions
+8 -6
View File
@@ -20,7 +20,8 @@ namespace server.Controllers.v1
[MapToApiVersion("1.0")]
[HttpGet]
[ProducesResponseType(typeof(List<Episode>), 200)]
[ProducesResponseType(500)]
[ProducesResponseType(typeof(ValidationProblemDetails), 400)]
[ProducesResponseType(typeof(ProblemDetails), 500)]
public async Task<ActionResult<List<Episode>>> GetEpisodesAsync([FromQuery] EpisodeFilter? filter)
{
try
@@ -31,29 +32,30 @@ namespace server.Controllers.v1
catch (Exception e)
{
Console.WriteLine(e);
return StatusCode(StatusCodes.Status500InternalServerError, "Failed to get episodes");
return Problem(detail: "Failed to get episode", statusCode: 500);
}
}
[MapToApiVersion("1.0")]
[HttpGet("{number:int}")]
[ProducesResponseType(typeof(Episode), 200)]
[ProducesResponseType(500)]
[ProducesResponseType(typeof(ValidationProblemDetails), 400)]
[ProducesResponseType(typeof(ProblemDetails), 404)]
[ProducesResponseType(typeof(ProblemDetails), 500)]
public async Task<ActionResult<Episode>> GetEpisodeByNumberAsync(int number)
{
try
{
var episode = await _episodeRepository.GetEpisodeByNumberAsync(number);
if (episode == null) return NotFound(new ErrorResponse($"Could not find episode number {number}"));
if (episode == null) return Problem(detail: $"Could not find episode {number}", statusCode: 404);
return Ok(episode);
}
catch (Exception e)
{
Console.WriteLine(e);
return StatusCode(StatusCodes.Status500InternalServerError, "Failed to get season");
return Problem(detail: "Failed to get episode", statusCode: 500);
}
}
}
+7 -6
View File
@@ -20,7 +20,7 @@ namespace server.Controllers.v1
[MapToApiVersion("1.0")]
[HttpGet]
[ProducesResponseType(typeof(List<Season>), 200)]
[ProducesResponseType(500)]
[ProducesResponseType(typeof(ProblemDetails), 500)]
public async Task<ActionResult<List<Season>>> GetSeasonsAsync()
{
try
@@ -31,29 +31,30 @@ namespace server.Controllers.v1
catch (Exception e)
{
Console.WriteLine(e);
return StatusCode(StatusCodes.Status500InternalServerError, "Failed to get seasons");
return Problem(detail: "Failed to get season", statusCode: 500);
}
}
[MapToApiVersion("1.0")]
[HttpGet("{number:int}")]
[ProducesResponseType(typeof(Season), 200)]
[ProducesResponseType(typeof(ErrorResponse), 404)]
[ProducesResponseType(500)]
[ProducesResponseType(typeof(ValidationProblemDetails), 400)]
[ProducesResponseType(typeof(ProblemDetails), 404)]
[ProducesResponseType(typeof(ProblemDetails),500)]
public async Task<ActionResult<Season>> GetSeasonByNumberAsync(int number)
{
try
{
var season = await _seasonRepository.GetSeasonByNumberAsync(number);
if (season == null) return NotFound(new ErrorResponse($"Could not find season number {number}"));
if (season == null) return Problem(detail: $"Could not find season {number}", statusCode: 404);
return Ok(season);
}
catch (Exception e)
{
Console.WriteLine(e);
return StatusCode(StatusCodes.Status500InternalServerError, "Failed to get season");
return Problem(detail: "Failed to get season", statusCode: 500);
}
}
}
+2
View File
@@ -9,5 +9,7 @@ namespace server.Models
public class EpisodeFilter
{
public int? Season { get; set; } = null;
public DateTime? StartDate { get; set; } = null;
public DateTime? EndDate { get; set; } = null;
}
}
-12
View File
@@ -1,12 +0,0 @@
namespace server.Models
{
public class ErrorResponse
{
public string Error { get; set; }
public ErrorResponse(string error)
{
Error = error;
}
}
}
@@ -24,6 +24,16 @@ namespace server.Persistence.Repositories
query = query.Where(episode => episode.Season == filter.Season);
}
if (filter?.StartDate != null)
{
query = query.Where(episode => episode.AirDate >= filter.StartDate);
}
if (filter?.EndDate != null)
{
query = query.Where(episode => episode.AirDate <= filter.EndDate);
}
return await query.ToListAsync();
}
catch (Exception e)