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); }