/// <summary> /// Retrieves the latest <see cref="PlexServer"/> data, and the corresponding <see cref="PlexLibrary"/>, from the PlexAPI and stores it in the Database. /// </summary> /// <param name="plexAccount">PlexAccount to use to retrieve the servers.</param> /// <returns>Is successful.</returns> public async Task <Result <bool> > RefreshPlexServersAsync(PlexAccount plexAccount) { if (plexAccount == null) { return(Result.Fail("plexAccount was null").LogWarning()); } Log.Debug($"Refreshing Plex servers for PlexAccount: {plexAccount.Id}"); var token = await _plexAuthenticationService.GetPlexApiTokenAsync(plexAccount); if (string.IsNullOrEmpty(token)) { Log.Warning("Token was empty"); return(Result.Fail("Token was empty")); } var serverList = await _plexServiceApi.GetServersAsync(token); if (!serverList.Any()) { return(Result.Ok(false)); } // Add initial entry for the plex servers var result = await _mediator.Send(new AddOrUpdatePlexServersCommand(plexAccount, serverList)); if (result.IsFailed) { return(result); } var plexServersResult = await InspectPlexServers(plexAccount, serverList); if (plexServersResult.IsFailed) { return(plexServersResult.ToResult()); } return(await _mediator.Send(new UpdatePlexServersCommand(plexServersResult.Value))); }
public Task <string> GetPlexTokenAsync(PlexAccount plexAccount) { return(_plexAuthenticationService.GetPlexApiTokenAsync(plexAccount)); }