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