public async Task <LastAlbumsResponse> Get([FromUri] LastAlbumsRequest request)
        {
            AddNewRelicCustomParameters(request);

            var lastAlbumsResponse = new LastAlbumsResponse {
                Albums = new List <Album>(),
                Info   = new LastAlbumsResponseInfo {
                    Page = request.Page, Source = request.Source
                }
            };

            try {
                ValidateRequest(request);
                var albums = await _lastAlbumService.GetFeedItemsAlbumsAsync(request.Source, request.Page);

                lastAlbumsResponse.Albums             = albums;
                lastAlbumsResponse.Info.Count         = albums.Count;
                lastAlbumsResponse.ResponseStatusCode = HttpStatusCode.OK;

                return(lastAlbumsResponse);
            }
            catch (ServiceApiException saex) {
                LogError(saex);
                lastAlbumsResponse.ResponseStatusCode = saex.StatusCode;
                return(lastAlbumsResponse);
            }
            catch (Exception ex) {
                LogError(ex);
                lastAlbumsResponse.ResponseStatusCode = HttpStatusCode.InternalServerError;
                return(lastAlbumsResponse);
            }
        }
 private void ValidateRequest(LastAlbumsRequest request)
 {
     if (request.Page < 1)
     {
         throw new ServiceApiException(HttpStatusCode.BadGateway,
                                       string.Format(ServiceApiException.InvalidValueErrorMessageFormat, "Page", request.Page));
     }
 }
 private void AddNewRelicCustomParameters(LastAlbumsRequest request)
 {
     _newRelicTransactionManager.AddCustomParameter("request.Source", request.Source);
     _newRelicTransactionManager.AddCustomParameter("request.Page", request.Page);
 }