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