public async Task <EmbySettings> SignIn([FromBody] EmbySettings request) { // Check if settings exist since we allow anon... var settings = await EmbySettings.GetSettingsAsync(); if (settings?.Servers?.Any() ?? false) { return(null); } var client = await EmbyApi.CreateClient(); request.Enable = true; var firstServer = request.Servers.FirstOrDefault(); // Test that we can connect var result = await client.GetUsers(firstServer.FullUri, firstServer.ApiKey); if (result != null && result.Any()) { firstServer.AdministratorId = result.FirstOrDefault(x => x.Policy.IsAdministrator)?.Id ?? string.Empty; await EmbySettings.SaveSettingsAsync(request); return(request); } return(null); }
public async Task <PublicInfo> GetServerInfo([FromBody] EmbyServers server) { var client = await EmbyApi.CreateClient(); var result = await client.GetPublicInformation(server.FullUri); return(result); }
public async Task <bool> Emby([FromBody] EmbyServers settings) { try { var client = await EmbyApi.CreateClient(); var result = await client.GetUsers(settings.FullUri, settings.ApiKey); return(result.Any()); } catch (Exception e) { Log.LogError(LoggingEvents.Api, e, "Could not test Emby"); return(false); } }
public async Task <EmbyItemContainer <MediaFolders> > GetLibaries([FromBody] EmbyServers server) { var client = await EmbyApi.CreateClient(); var result = await client.GetLibraries(server.ApiKey, server.FullUri); var mediaFolders = new EmbyItemContainer <MediaFolders> { TotalRecordCount = result.Count, Items = new List <MediaFolders>() }; foreach (var folder in result) { var toAdd = new MediaFolders { Name = folder.Name, Id = folder.ItemId, ServerId = server.ServerId }; var types = folder?.LibraryOptions?.TypeOptions?.Select(x => x.Type); if (!types.Any()) { continue; } if (types.Where(x => x.Equals("Movie", System.StringComparison.InvariantCultureIgnoreCase) || x.Equals("Episode", System.StringComparison.InvariantCultureIgnoreCase)).Count() >= 2) { toAdd.CollectionType = "mixed"; } else if (types.Where(x => x.Equals("Movie", System.StringComparison.InvariantCultureIgnoreCase)).Any()) { toAdd.CollectionType = "movies"; } else if (types.Where(x => x.Equals("Episode", System.StringComparison.InvariantCultureIgnoreCase)).Any()) { toAdd.CollectionType = "tvshows"; } mediaFolders.Items.Add(toAdd); } return(mediaFolders); }
public async Task <IEnumerable <UsersViewModel> > EmbyUsers() { var vm = new List <UsersViewModel>(); var s = await EmbySettings.GetSettingsAsync(); var client = EmbyApi.CreateClient(s); foreach (var server in s?.Servers ?? new List <EmbyServers>()) { var users = await client.GetUsers(server.FullUri, server.ApiKey); if (users != null && users.Any()) { vm.AddRange(users.Select(u => new UsersViewModel { Username = u.Name, Id = u.Id })); } } // Filter out any dupes return(vm.DistinctBy(x => x.Id)); }