public async Task <Result <SearchArtistByNameResponse> > Handle(SearchArtistByNameRequest request, CancellationToken cancellationToken)
        {
            var operation = await _musicSearchApiClient.SearchArtistsByNameAsync(request.Name);

            if (!operation.Status)
            {
                return(Result <SearchArtistByNameResponse> .Failure(operation.ErrorCode, operation.Validation));
            }

            operation = _musicArtistFilter.FilterByScore(operation);

            var artistDtos = operation.Data?.Artists ?? new List <MusicArtistDto>();

            if (!artistDtos.Any())
            {
                return(Result <SearchArtistByNameResponse> .Failure(ErrorCodes.ArtistNotFound, "Artist not found."));
            }

            var artists = artistDtos.Select(x => new Artist
            {
                Name        = x.Name,
                Id          = x.Id,
                Description = x.Disambiguation
            }).ToList();

            return(Result <SearchArtistByNameResponse> .Success(new SearchArtistByNameResponse
            {
                Artists = artists
            }));
        }
Пример #2
0
 public SearchArtistByNameRequestHandlerTests(TestsInitializer testsInitializer)
 {
     _testsInitializer  = testsInitializer;
     _request           = testsInitializer.Fixture.Create <SearchArtistByNameRequest>();
     _musicSearchClient = new Mock <IMusicSearchApiClient>();
     _filterService     = new Mock <IMusicArtistFilterService>();
     _handler           = new SearchArtistByNameRequestHandler(_musicSearchClient.Object, _filterService.Object);
 }
        public async Task <Result <GetArtistByNameResponse> > Handle(GetArtistByNameRequest request, CancellationToken cancellationToken)
        {
            var searchArtistByNameRequest = new SearchArtistByNameRequest
            {
                CorrelationId = request.CorrelationId,
                Name          = request.Name
            };

            var operation = await _mediator.Send(searchArtistByNameRequest, cancellationToken);

            if (!operation.Status)
            {
                return(Result <GetArtistByNameResponse> .Failure(operation.ErrorCode, operation.Validation));
            }

            var response = GetArtistResponse(operation.Data);

            return(response);
        }
Пример #4
0
 private void GivenRequestIsNull()
 {
     _request = null;
 }
Пример #5
0
 public SearchArtistByNameRequestValidatorTests(TestsInitializer testsInitializer)
 {
     _validator = new SearchArtistByNameRequestValidator();
     _request   = testsInitializer.Fixture.Create <SearchArtistByNameRequest>();
 }