public async Task <IActionResult> GetMoviesAsync([FromQuery] MovieQueryParameters movieQueryParameters) { Logger.LogInformation(nameof(GetMoviesAsync), "Web Request", HttpContext); if (movieQueryParameters == null) { throw new ArgumentNullException(nameof(movieQueryParameters)); } List <Middleware.Validation.ValidationError> list = movieQueryParameters.Validate(); if (list.Count > 0) { Logger.LogWarning( new EventId((int)HttpStatusCode.BadRequest, HttpStatusCode.BadRequest.ToString()), nameof(GetMoviesAsync), "Invalid query string", HttpContext); return(ResultHandler.CreateResult(list, Request.Path.ToString() + (Request.QueryString.HasValue ? Request.QueryString.Value : string.Empty))); } return(await DataService.Read <List <Movie> >(Request).ConfigureAwait(false)); }
public async Task <IActionResult> GetMoviesAsync([FromQuery] MovieQueryParameters movieQueryParameters) { if (movieQueryParameters == null) { throw new ArgumentNullException(nameof(movieQueryParameters)); } System.Collections.Generic.List <Middleware.Validation.ValidationError> list = movieQueryParameters.Validate(); if (list.Count > 0) { Logger.LogWarning( new EventId((int)HttpStatusCode.BadRequest, HttpStatusCode.BadRequest.ToString()), nameof(GetMoviesAsync), "Invalid query string", HttpContext); return(ResultHandler.CreateResult(list, Request.Path.ToString() + (Request.QueryString.HasValue ? Request.QueryString.Value : string.Empty))); } // get the result IActionResult res = await ResultHandler.Handle(dal.GetMoviesAsync(movieQueryParameters), Logger).ConfigureAwait(false); // use cache dal on Cosmos 429 errors if (App.Cache && res is JsonResult jres && jres.StatusCode == 429) { res = await ResultHandler.Handle(App.CacheDal.GetMoviesAsync(movieQueryParameters), Logger).ConfigureAwait(false); } return(res); }