Example #1
0
        public async Task <IActionResult> GetAuthor(Guid authorId, string fields,
                                                    [FromHeader(Name = "Accept")] string mediaType)
        {
            if (!MediaTypeHeaderValue.TryParse(mediaType, out var parsedMediaType))
            {
                return(BadRequest());
            }
            if (!mCheckerService.CheckIfValid <AuthorDto>(fields))
            {
                return(BadRequest());
            }
            var author = await mRepository.GetAuthorAsync(authorId);

            if (author == null)
            {
                return(NotFound());
            }
            //for mediatype, that contains ...hateoas+json
            var includeLinks = parsedMediaType.SubTypeWithoutSuffix
                               .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase);
            IEnumerable <LinkDto> links = new List <LinkDto>();

            if (includeLinks)
            {
                links = CreateLinksForAuthor(authorId, fields);
            }

            var primaryMediaType = includeLinks
                ? parsedMediaType.SubTypeWithoutSuffix
                                   .Substring(0, parsedMediaType.SubTypeWithoutSuffix.Length - 8)
                : parsedMediaType.SubTypeWithoutSuffix;

            //full author dto
            if (primaryMediaType == "vnd.marvin.author.full")
            {
                var fullResourceToReturn = mMapper.Map <AuthorFullDto>(author)
                                           .ShapeData(fields) as IDictionary <string, object>;
                if (includeLinks)
                {
                    fullResourceToReturn.Add("links", links);
                }
                return(Ok(fullResourceToReturn));
            }

            //friendly author dto
            var friendlyResourceToReturn = mMapper.Map <AuthorDto>(author)
                                           .ShapeData(fields) as IDictionary <string, object>;

            if (includeLinks)
            {
                friendlyResourceToReturn.Add("links", links);
            }

            return(Ok(friendlyResourceToReturn));
        }
Example #2
0
        public async Task <ActionResult <AuthorDto> > GetAuthorAsync(Guid authorId)
        {
            var authorFromRepo = await _courseLibraryRepository.GetAuthorAsync(authorId);

            if (authorFromRepo == null)
            {
                return(NotFound());
            }

            return(Ok(_mapper.Map <AuthorDto>(authorFromRepo)));
        }
        public async Task <IActionResult> GetAuthor(Guid authorId)
        {
            var author = await _courseLibraryRepository.GetAuthorAsync(authorId);

            if (author == null)
            {
                return(NotFound());
            }

            var authorsDto = _mapper.Map <AuthorDto>(author);

            authorsDto.Links = CreateLinksForAuthor(authorId);

            return(Ok(authorsDto)); // 200 Ok
        }
        public async Task <IActionResult> GetAuthorAsync(Guid authorId, string fields)
        {
            if (!_propertyCheckerService.TypeHasProperties <AuthorDto>(fields))
            {
                return(BadRequest());
            }

            var authorFromRepo = await _courseLibraryRepository.GetAuthorAsync(authorId);

            if (authorFromRepo == null)
            {
                return(NotFound());
            }

            return(Ok(_mapper.Map <AuthorDto>(authorFromRepo).ShapeData(fields)));
        }