Ejemplo n.º 1
0
        public async Task <IActionResult> Get(string upcId)
        {
            var content = new ContentResult
            {
                ContentType = ContentType
            };

            try
            {
                var movie = await _upcToMovieFinder.GetAsync(upcId);

                content.Content    = movie.ToJson();
                content.StatusCode = (int)HttpStatusCode.OK;
            }
            catch (Exception ex) when(ex is UpcNotFoundException || ex is MovieNotFoundException)
            {
                content.Content    = ex.GetBaseException().ToJson();
                content.StatusCode = (int)HttpStatusCode.NotFound;
            }
            catch (UpcStoreRequestLimitExceededException ex)
            {
                content.Content    = ex.GetBaseException().Message;
                content.StatusCode = 429;
            }
            catch (InternalUpcStoreErrorException ex)
            {
                content.Content    = ex.GetBaseException().Message;
                content.StatusCode = (int)HttpStatusCode.InternalServerError;
            }
            catch (UnauthorizedAccessException ex)
            {
                content.Content    = ex.GetBaseException().Message;
                content.StatusCode = (int)HttpStatusCode.Unauthorized;
            }
            catch (Exception ex)
            {
                content.Content    = ex.GetBaseException().Message;
                content.StatusCode = (int)HttpStatusCode.InternalServerError;
            }

            return(content);
        }