Esempio n. 1
0
        public async Task SearchByVersionManual(string input, int count)
        {
            var versionMatcher = new VersionMatcher(NullLogger <VersionMatcher> .Instance);
            var handler        = new SearchVersionHandler(NullLogger <SearchVersionHandler> .Instance, versionMatcher);

            var command = new SearchVersionCommand {
                Version = input
            };

            var results = await handler.Handle(command, CancellationToken.None);

            results.Should().NotBeNullOrEmpty();

            var list = results.ToList();

            list.Count.Should().Be(count);
        }
Esempio n. 2
0
        public async Task SearchByVersionServices(string input, int count)
        {
            var services = new ServiceCollection()
                           .AddChallengeServices()
                           .AddScoped(typeof(ILogger <>), typeof(NullLogger <>));

            var provider = services.BuildServiceProvider();

            var mediator = provider.GetRequiredService <IMediator>();

            var command = new SearchVersionCommand {
                Version = input
            };

            var results = await mediator.Send(command);

            results.Should().NotBeNullOrEmpty();

            var list = results.ToList();

            list.Count.Should().Be(count);
        }
        public Task <IEnumerable <Software> > Handle(SearchVersionCommand request, CancellationToken cancellationToken)
        {
            try
            {
                _logger.LogTrace("Processing request '{request}' ...", request);
                var watch = Stopwatch.StartNew();

                var matched = SoftwareManager
                              .GetAllSoftware()
                              .Where(software => _versionMatcher.IsGreaterThan(software.Version, request.Version))
                              .ToList();

                watch.Stop();
                _logger.LogTrace("Processed request '{requestName}': {elapsed} ms", request, watch.ElapsedMilliseconds);

                return(Task.FromResult <IEnumerable <Software> >(matched));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Error processing request '{requestName}': {errorMessage}", request, ex.Message);
                throw;
            }
        }