Exemplo n.º 1
0
        public async Task <Result <PlexServerStatus> > CheckPlexServerStatusAsync(PlexServer plexServer, int plexAccountId = 0, bool trimEntries = true)
        {
            // Get plexServer authToken
            var authToken = await _plexAuthenticationService.GetPlexServerTokenAsync(plexServer.Id, plexAccountId);

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

            // Request status
            var serverStatus = await _plexServiceApi.GetPlexServerStatusAsync(authToken.Value, plexServer.ServerUrl);

            serverStatus.PlexServer   = plexServer;
            serverStatus.PlexServerId = plexServer.Id;

            // Add plexServer status to DB, the PlexServerStatus table functions as a server log.
            var result = await _mediator.Send(new CreatePlexServerStatusCommand(serverStatus));

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

            if (trimEntries)
            {
                // Ensure that there are not too many PlexServerStatuses stored.
                var trimResult = await _mediator.Send(new TrimPlexServerStatusCommand(plexServer.Id));

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

            return(await _mediator.Send(new GetPlexServerStatusByIdQuery(result.Value)));
        }