Ejemplo n.º 1
0
 public async Task Validate_TaskPredicateがnullの場合は例外が発生する()
 {
     var act = () => ResultExtensions.Validate(
         source: Result.Ok("A"),
         predicate: (Func <string, Task <bool> >)null);
     await act.Should().ThrowAsync <ArgumentNullException>();
 }
Ejemplo n.º 2
0
    public async Task AsyncSync_sourceパラメーターが指定されていない場合は例外が発生する()
    {
        Func <Task> act    = () => ResultExtensions.MapError((Task <Result <string> >)null, _ => new Error());
        var         result = await act.Should().ThrowAsync <ArgumentNullException>();

        result.And.ParamName.Should().Be("source");
    }
Ejemplo n.º 3
0
    public async Task T_全て成功の場合は成功になる()
    {
        var result = await ResultExtensions.Merge(new[] { Result.Ok("A").AsTask(), Result.Ok("B").AsTask() });

        result.Should().BeOk();
        result.Get().Should().HaveCount(2);
    }
Ejemplo n.º 4
0
        private async Task <Result <PlexDownloadClient> > CreateDownloadClientAsync(DownloadTask downloadTask)
        {
            if (downloadTask == null)
            {
                return(ResultExtensions.IsNull(nameof(downloadTask)).LogError());
            }

            var authenticateDownloadTaskResult = await AuthenticateDownloadTask(downloadTask);

            if (authenticateDownloadTaskResult.IsFailed)
            {
                return(authenticateDownloadTaskResult.ToResult().LogError());
            }

            // Create download client
            var newClient = _plexDownloadClientFactory(downloadTask);

            newClient.Parts = _userSettings.AdvancedSettings.DownloadManager.DownloadSegments;


            // Setup the client
            var setupResult = await newClient.SetupAsync(downloadTask.DownloadWorkerTasks);

            if (setupResult.IsFailed)
            {
                return(setupResult.ToResult());
            }

            SetupSubscriptions(newClient);
            _downloadsList.Add(newClient);
            return(Result.Ok(newClient));
        }
Ejemplo n.º 5
0
    public void 全て成功の場合は成功になる()
    {
        var result = ResultExtensions.Merge(new[] { Result.Ok("A"), Result.Ok("B") });

        result.Should().BeOk();
        result.Get().Should().HaveCount(2);
    }
Ejemplo n.º 6
0
    public async Task AsyncSync_sourceが指定されていない場合は例外が発生する()
    {
        var act    = () => ResultExtensions.TapError(null as Task <Result>, _ => { });
        var result = await act.Should().ThrowAsync <ArgumentNullException>();

        result.And.ParamName.Should().Be("source");
    }
Ejemplo n.º 7
0
 public async Task Async_nullの場合は例外が発生する()
 {
     Func<Task> act = () => ResultExtensions.ContainsError(
         source: null as Task<Result<string>>,
         new Error());
     await act.Should().ThrowAsync<ArgumentNullException>();
 }
Ejemplo n.º 8
0
        /// <summary>
        /// Fetch stock information and data
        /// </summary>
        /// <param name="symbol"></param>
        /// <returns></returns>
        public async Task <Result <StockInfoClientResponseDto> > GetStockInfo(string symbol)
        {
            _logger.LogInformation("Fetching data for ticker {0}", symbol);

            AddQueryParam("t", symbol);

            var response = await _http.GetAsync(BuildQuery());

            _logger.LogInformation("Data fetched for ticker {0}", symbol);

            var result = await HandleClientResponse(response);

            if (!result.Succedded)
            {
                _logger.LogInformation("Fetchind data for ticker {0} failed -> {1}", symbol, result.Message);
                return(ResultExtensions.Failure <StockInfoClientResponseDto>(result.Message));
            }

            if (!ContainsTickerId(result.Instance, symbol))
            {
                _logger.LogInformation("Ticker {0} not found", symbol);
                return(ResultExtensions.Failure <StockInfoClientResponseDto>("Ticker not found"));
            }

            var fetchedInstance = ParseInstanceFromHtmlContent(result.Instance);

            _logger.LogInformation("Data for ticker fetched and prepared");

            return(ResultExtensions.Success(fetchedInstance));
        }
Ejemplo n.º 9
0
    public async Task A_全て成功の場合は成功になる()
    {
        var result = await ResultExtensions.Merge(Task.FromResult(new[] { Result.Ok("A"), Result.Ok("B") }.AsEnumerable()));

        result.Should().BeOk();
        result.Get().Should().HaveCount(2);
    }
Ejemplo n.º 10
0
 public async Task Async_Validate_TaskSourceがnullの場合は例外が発生する()
 {
     var act = () => ResultExtensions.Validate(
         source: (Task <Result <string> >)null,
         predicate: v => Task.FromResult(true));
     await act.Should().ThrowAsync <ArgumentNullException>();
 }
Ejemplo n.º 11
0
        public async Task <ResultArray <StockInfoResponseDto> > GetStockInfos(string symbol)
        {
            var clients = _factory.GetAllClients();

            if (!clients.Any())
            {
                return(ResultExtensions.FailureArray <StockInfoResponseDto>("Unexpected exception"));
            }

            var clientTasks = await LaunchClientsCall(clients, symbol);

            var finishedTasks = clientTasks.Cast <Task <Result <StockInfoClientResponseDto> > >();

            var results = new List <StockInfoResponseDto>();

            foreach (var finshedTask in finishedTasks)
            {
                var instance = HandleClientResponse(finshedTask.Result);

                if (instance == null)
                {
                    var dto = _mapper.Map <StockInfoResponseDto>(instance);
                    results.Add(dto);
                }
            }

            return(ResultExtensions.Success(instances: results));
        }
 public async Task Async_TaskPredicateがnullの場合は例外が発生する()
 {
     var act = () => ResultExtensions.ValidateError(
         source: Result.Error <string>(new Error()).AsTask(),
         predicate: (Func <IError, Task <bool> >)null);
     await act.Should().ThrowAsync <ArgumentNullException>();
 }
Ejemplo n.º 13
0
    public async Task ReturnT_AsyncSync_sourceパラメーターが指定されていない場合は例外が発生する()
    {
        Func <Task> act    = () => ResultExtensions.FlatMap(null as Task <Result>, () => Result.Ok("ok"));
        var         result = await act.Should().ThrowAsync <ArgumentNullException>();

        result.And.ParamName.Should().Be("source");
    }
 public async Task Async_Predicateがnullの場合は例外が発生する()
 {
     var act = () => ResultExtensions.ValidateError(
         source: Result.Ok("A").AsTask(),
         predicate: (Func <IError, bool>)null);
     await act.Should().ThrowAsync <ArgumentNullException>();
 }
Ejemplo n.º 15
0
        public async Task <TResponse> Handle(TRequest request, CancellationToken cancellationToken,
                                             RequestHandlerDelegate <TResponse> next)
        {
            var fluentValidationResult = await _compositeValidator.ValidateAsync(request, cancellationToken);

            if (!fluentValidationResult.IsValid)
            {
                var result = new TResponse();
                var error  = ResultExtensions.Get400BadRequestError();
                foreach (var reason in fluentValidationResult.Errors)
                {
                    error.Reasons.Add(new Error(reason.ErrorMessage));
                }

                result.Reasons.Add(error);
                return(result);
            }

            // Encapsulate all handlers with this try/catch block as not to do this in every handler itself.
            try
            {
                return(await next());
            }
            catch (Exception e)
            {
                return(Result.Fail(new ExceptionalError(e)).LogError() as TResponse);
            }
        }
Ejemplo n.º 16
0
    public async Task Func_AsyncSync_Sourceがnullの場合は例外が発生する()
    {
        var act    = () => ResultExtensions.Combine(null as Task <Result <string> >, _ => Result.Ok("ok"));
        var result = await act.Should().ThrowAsync <ArgumentNullException>();

        result.And.ParamName.Should().Be("source");
    }
Ejemplo n.º 17
0
        public async Task <Result <DownloadTask> > Handle(GetDownloadTaskByIdQuery request, CancellationToken cancellationToken)
        {
            var query = _dbContext.DownloadTasks.AsQueryable();

            if (request.IncludeServer)
            {
                query = query.Include(x => x.PlexServer);
            }

            if (request.IncludePlexLibrary)
            {
                query = query.Include(x => x.PlexLibrary);
            }

            var downloadTask = await query
                               .Include(x => x.DownloadWorkerTasks)
                               .Include(x => x.DownloadFolder)
                               .Include(x => x.DestinationFolder)
                               .FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken);

            if (downloadTask == null)
            {
                return(ResultExtensions.GetEntityNotFound(nameof(DownloadTask), request.Id));
            }

            return(Result.Ok(downloadTask));
        }
Ejemplo n.º 18
0
    public async Task Async_sourceがnullの場合は例外が発生する()
    {
        Func <Task> act    = () => ResultExtensions.Empty(null as Task <Result <string> >);
        var         result = await act.Should().ThrowAsync <ArgumentNullException>();

        result.And.ParamName.Should().Be("source");
    }
Ejemplo n.º 19
0
    public async Task AsyncAsync_sourceパラメーターが指定されていない場合は例外が発生する()
    {
        Func <Task> act    = () => ResultExtensions.Map(null as Task <Result <string> >, _ => Task.FromResult("v"));
        var         result = await act.Should().ThrowAsync <ArgumentNullException>();

        result.And.ParamName.Should().Be("source");
    }
Ejemplo n.º 20
0
    public async Task AsyncAsync_sourceが指定されていない場合は例外が発生する()
    {
        var act    = () => ResultExtensions.Tap(null as Task <Result <string> >, _ => { return(Task.Run(() => { })); });
        var result = await act.Should().ThrowAsync <ArgumentNullException>();

        result.And.ParamName.Should().Be("source");
    }
Ejemplo n.º 21
0
        public async Task <Result <PlexServer> > Handle(GetPlexServerByPlexTvShowEpisodeIdQuery request,
                                                        CancellationToken cancellationToken)
        {
            var plexTvShowEpisode = await _dbContext.PlexTvShowEpisodes
                                    .Include(x => x.TvShowSeason)
                                    .ThenInclude(x => x.TvShow)
                                    .ThenInclude(x => x.PlexLibrary)
                                    .ThenInclude(x => x.PlexServer)
                                    .ThenInclude(x => x.ServerStatus)
                                    .FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken);

            if (plexTvShowEpisode == null)
            {
                return(ResultExtensions.Create404NotFoundResult());
            }

            var plexServer = plexTvShowEpisode?.TvShowSeason?.TvShow?.PlexLibrary?.PlexServer;

            if (plexServer == null)
            {
                return(ResultExtensions.GetEntityNotFound(nameof(PlexServer), request.Id)
                       .LogError(null, $"Could not retrieve the PlexServer from PlexTvShowEpisode with id: {request.Id}"));
            }

            return(Result.Ok(plexServer));
        }
        public async Task <Result <PlexTvShow> > Handle(GetPlexTvShowByIdWithEpisodesQuery request, CancellationToken cancellationToken)
        {
            IQueryable <PlexTvShow> query = _dbContext.PlexTvShows.Include(x => x.Seasons)
                                            .ThenInclude(x => x.Episodes)
                                            .ThenInclude(x => x.EpisodeData)
                                            .ThenInclude(x => x.Parts);

            if (request.IncludeLibrary)
            {
                query = query
                        .Include(x => x.PlexLibrary)
                        .ThenInclude(x => x.PlexServer);
            }

            var plexTvShow = await query
                             .OrderBy(x => x.Key)
                             .FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken);

            if (plexTvShow == null)
            {
                return(ResultExtensions.GetEntityNotFound(nameof(PlexTvShow), request.Id));
            }

            plexTvShow.Seasons = plexTvShow.Seasons.OrderBy(x => x.Title).ToList();

            return(Result.Ok(plexTvShow));
        }
Ejemplo n.º 23
0
    public async Task Func_AsyncSync_Destがnullの場合は例外が発生する()
    {
        var act    = () => ResultExtensions.Combine(Result.Ok("Ok").AsTask(), (Func <string, Result <int> >)null);
        var result = await act.Should().ThrowAsync <ArgumentNullException>();

        result.And.ParamName.Should().Be("dest");
    }
 public async Task Async_sourceがnullの場合は例外が発生する()
 {
     var act = () => ResultExtensions.ValidateError(
         source: null as Task <Result <string> >,
         predicate: _ => true);
     await act.Should().ThrowAsync <ArgumentNullException>();
 }
Ejemplo n.º 25
0
    public async Task AsyncAsync_sourceパラメーターが指定されていない場合は例外が発生する()
    {
        Func <Task> act    = () => ResultExtensions.FlatMapError(null as Task <Result>, e => Task.Run(() => Result.Ok()));
        var         result = await act.Should().ThrowAsync <ArgumentNullException>();

        result.And.ParamName.Should().Be("source");
    }
    public void Predicateがnullの場合は例外が発生する()
    {
        var act = () => ResultExtensions.ValidateError(
            source: Result.Error <string>(new Error()),
            predicate: (Func <IError, bool>)null);

        act.Should().Throw <ArgumentNullException>();
    }
Ejemplo n.º 27
0
    public void Validate_Predicateがnullの場合は例外が発生する()
    {
        var act = () => ResultExtensions.Validate(
            source: Result.Ok("A"),
            predicate: (Func <string, bool>)null);

        act.Should().Throw <ArgumentNullException>();
    }
        public void TalkBackHelloReturnsOK()
        {
            var result         = _talkBackController.GetHello();
            var responseString = ResultExtensions.OKResponseToType(result);

            result.Result.Should().BeOfType <OkObjectResult>();
            responseString.Should().BeEquivalentTo("Hello World");
        }
Ejemplo n.º 29
0
        private async Task <Result <T> > HandleGoodRequest <T>(HttpResponseMessage response)
        {
            var content = await ReadResponseContent(response);

            var instnace = JsonConvert.DeserializeObject <T>(content);

            return(ResultExtensions.Success(instnace));
        }
Ejemplo n.º 30
0
        public async Task <Result> PauseDownloadTask(int downloadTaskId)
        {
            if (downloadTaskId <= 0)
            {
                return(ResultExtensions.IsInvalidId(nameof(downloadTaskId), downloadTaskId).LogWarning());
            }

            return(await _downloadManager.PauseDownload(downloadTaskId));
        }