From 8d2c57e70210f92ef2afd518facef0a59bebf753 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 13 Feb 2020 16:13:56 +0000 Subject: [PATCH] --- devdocs/todo.txt | 2 +- .../AyaNova/ControllerHelpers/ListOptions.cs | 6 ++---- .../AyaNova/Controllers/DataListController.cs | 21 +++++++++++++++++-- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/devdocs/todo.txt b/devdocs/todo.txt index a488b839..34e94909 100644 --- a/devdocs/todo.txt +++ b/devdocs/todo.txt @@ -245,7 +245,7 @@ MISC FUTURE ITEMS NOT SURE ABOUT THAT CAME UP DURING CODING / TESTING - Should server show uptime somewhere? - Log route: Add a route to download *all* log files as a single zip archive which will make life much easier for analysis - +- how to set default values in api explorer example json for post routes (e.g. dataList defaults wouldn't work unless changed, auth wb nice if set to default manager account) diff --git a/server/AyaNova/ControllerHelpers/ListOptions.cs b/server/AyaNova/ControllerHelpers/ListOptions.cs index 7843845d..b934a7ce 100644 --- a/server/AyaNova/ControllerHelpers/ListOptions.cs +++ b/server/AyaNova/ControllerHelpers/ListOptions.cs @@ -10,12 +10,10 @@ namespace AyaNova.Api.ControllerHelpers public const int DefaultOffset = 0; public const int DefaultLimit = 25; - [FromBody] - [Range(0, int.MaxValue)] + [FromBody] public int? Offset { get; set; } - [FromBody] - [Range(1, MaxPageSize, ErrorMessage = "Limit must be greater than 0 and less than 1000.")] + [FromBody] public int? Limit { get; set; } // //Data filter id to use with this list query diff --git a/server/AyaNova/Controllers/DataListController.cs b/server/AyaNova/Controllers/DataListController.cs index 5347bfdc..5e2549be 100644 --- a/server/AyaNova/Controllers/DataListController.cs +++ b/server/AyaNova/Controllers/DataListController.cs @@ -48,13 +48,30 @@ namespace AyaNova.Api.Controllers /// /// List key, Paging, filtering and sorting options /// Collection with paging data - // [HttpPost("List", Name = nameof(List))] - [HttpPost] + // [HttpPost("List", Name = nameof(List))] + [HttpPost] public async Task List([FromBody] ListOptions listOptions) { if (serverState.IsClosed) return StatusCode(503, new ApiErrorResponse(ApiErrorCode.API_CLOSED, null, serverState.Reason)); + if (listOptions.Limit == null || listOptions.Limit < 1) + { + listOptions.Limit = ListOptions.DefaultLimit; + } + if (listOptions.Offset == null) + { + listOptions.Offset = 0; + } + //this is to workaround a quirk in the api explorer with default values + if(listOptions.SortJson=="string"){ + listOptions.SortJson=string.Empty; + } + if(listOptions.FilterJson=="string"){ + listOptions.FilterJson=string.Empty; + } + + if (!ModelState.IsValid) return BadRequest(new ApiErrorResponse(ModelState));