コード例 #1
0
        public async Task <Either <BaseError, PlexConnectionParametersViewModel> > Handle(
            GetPlexConnectionParameters request,
            CancellationToken cancellationToken)
        {
            if (_memoryCache.TryGetValue(request, out PlexConnectionParametersViewModel parameters))
            {
                return(parameters);
            }

            Either <BaseError, PlexConnectionParametersViewModel> maybeParameters =
                await Validate(request)
                .MapT(
                    cp => new PlexConnectionParametersViewModel(
                        new Uri(cp.ActiveConnection.Uri),
                        cp.PlexServerAuthToken.AuthToken))
                .Map(v => v.ToEither <PlexConnectionParametersViewModel>());

            return(maybeParameters.Match(
                       p =>
            {
                _memoryCache.Set(request, p, TimeSpan.FromHours(1));
                return maybeParameters;
            },
                       error => error));
        }