Пример #1
0
    HandleImpl(ISynchronizePlexLibraryById request, CancellationToken cancellationToken)
    {
        Validation <BaseError, RequestParameters> validation = await Validate(request);

        return(await validation.Match(
                   parameters => Synchronize(parameters, cancellationToken),
                   error => Task.FromResult <Either <BaseError, string> >(error.Join())));
    }
Пример #2
0
    private async Task SynchronizePlexLibrary(
        ISynchronizePlexLibraryById request,
        CancellationToken cancellationToken)
    {
        using IServiceScope scope = _serviceScopeFactory.CreateScope();
        IMediator mediator = scope.ServiceProvider.GetRequiredService <IMediator>();

        Either <BaseError, string> result = await mediator.Send(request, cancellationToken);

        result.BiIter(
            name => _logger.LogDebug("Done synchronizing plex library {Name}", name),
            error => _logger.LogWarning(
                "Unable to synchronize plex library {LibraryId}: {Error}",
                request.PlexLibraryId,
                error.Value));
    }
 private async Task <Validation <BaseError, RequestParameters> > Validate(ISynchronizePlexLibraryById request) =>
 (await ValidateConnection(request), await PlexLibraryMustExist(request))
 Handle(ISynchronizePlexLibraryById request) =>
 Validate(request)
 .MapT(parameters => Synchronize(parameters).Map(_ => parameters.Library.Name))
 .Bind(v => v.ToEitherAsync());