private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, Dictionary<string, SyncedItemProgress> syncProgress, User user = null, BaseItem owner = null) { var fields = options.Fields; if (item == null) { throw new ArgumentNullException("item"); } if (fields == null) { throw new ArgumentNullException("fields"); } var dto = new BaseItemDto { ServerId = _appHost.SystemId }; if (fields.Contains(ItemFields.People)) { AttachPeople(dto, item); } if (fields.Contains(ItemFields.PrimaryImageAspectRatio)) { try { AttachPrimaryImageAspectRatio(dto, item); } catch (Exception ex) { // Have to use a catch-all unfortunately because some .net image methods throw plain Exceptions _logger.ErrorException("Error generating PrimaryImageAspectRatio for {0}", ex, item.Name); } } if (fields.Contains(ItemFields.DisplayPreferencesId)) { dto.DisplayPreferencesId = item.DisplayPreferencesId.ToString("N"); } if (user != null) { AttachUserSpecificInfo(dto, item, user, fields, syncProgress); } var hasMediaSources = item as IHasMediaSources; if (hasMediaSources != null) { if (fields.Contains(ItemFields.MediaSources)) { if (user == null) { dto.MediaSources = _mediaSourceManager().GetStaticMediaSources(hasMediaSources, true).ToList(); } else { dto.MediaSources = _mediaSourceManager().GetStaticMediaSources(hasMediaSources, true, user).ToList(); } } } if (fields.Contains(ItemFields.Studios)) { AttachStudios(dto, item); } AttachBasicFields(dto, item, owner, options); var tvChannel = item as LiveTvChannel; if (tvChannel != null) { _livetvManager().AddChannelInfo(dto, tvChannel, options, user); } var collectionFolder = item as ICollectionFolder; if (collectionFolder != null) { dto.CollectionType = user == null ? collectionFolder.CollectionType : collectionFolder.GetViewType(user); } var playlist = item as Playlist; if (playlist != null) { AttachLinkedChildImages(dto, playlist, user, options); } if (fields.Contains(ItemFields.CanDelete)) { dto.CanDelete = user == null ? item.CanDelete() : item.CanDelete(user); } if (fields.Contains(ItemFields.CanDownload)) { dto.CanDownload = user == null ? item.CanDownload() : item.CanDownload(user); } if (fields.Contains(ItemFields.Etag)) { dto.Etag = item.GetEtag(user); } if (item is ILiveTvRecording) { _livetvManager().AddInfoToRecordingDto(item, dto, user); } else if (item is LiveTvProgram) { _livetvManager().AddInfoToProgramDto(item, dto, fields.Contains(ItemFields.ChannelInfo), user); } return dto; }
private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, List <Folder> allCollectionFolders, User user = null, BaseItem owner = null) { var dto = new BaseItemDto { ServerId = _appHost.SystemId }; if (item.SourceType == SourceType.Channel) { dto.SourceType = item.SourceType.ToString(); } if (options.ContainsField(ItemFields.People)) { AttachPeople(dto, item); } if (options.ContainsField(ItemFields.PrimaryImageAspectRatio)) { try { AttachPrimaryImageAspectRatio(dto, item); } catch (Exception ex) { // Have to use a catch-all unfortunately because some .net image methods throw plain Exceptions _logger.LogError(ex, "Error generating PrimaryImageAspectRatio for {itemName}", item.Name); } } if (options.ContainsField(ItemFields.DisplayPreferencesId)) { dto.DisplayPreferencesId = item.DisplayPreferencesId.ToString("N"); } if (user != null) { AttachUserSpecificInfo(dto, item, user, options); } var hasMediaSources = item as IHasMediaSources; if (hasMediaSources != null) { if (options.ContainsField(ItemFields.MediaSources)) { dto.MediaSources = _mediaSourceManager().GetStaticMediaSources(item, true, user).ToArray(); NormalizeMediaSourceContainers(dto); } } if (options.ContainsField(ItemFields.Studios)) { AttachStudios(dto, item); } AttachBasicFields(dto, item, owner, options); if (options.ContainsField(ItemFields.CanDelete)) { dto.CanDelete = user == null ? item.CanDelete() : item.CanDelete(user); } if (options.ContainsField(ItemFields.CanDownload)) { dto.CanDownload = user == null ? item.CanDownload() : item.CanDownload(user); } if (options.ContainsField(ItemFields.Etag)) { dto.Etag = item.GetEtag(user); } var liveTvManager = _livetvManager(); var activeRecording = liveTvManager.GetActiveRecordingInfo(item.Path); if (activeRecording != null) { dto.Type = "Recording"; dto.CanDownload = false; dto.RunTimeTicks = null; if (!string.IsNullOrEmpty(dto.SeriesName)) { dto.EpisodeTitle = dto.Name; dto.Name = dto.SeriesName; } liveTvManager.AddInfoToRecordingDto(item, dto, activeRecording, user); } return(dto); }
private async Task<BaseItemDto> GetBaseItemDtoInternal(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null) { var fields = options.Fields; if (item == null) { throw new ArgumentNullException("item"); } if (fields == null) { throw new ArgumentNullException("fields"); } var dto = new BaseItemDto { ServerId = _appHost.SystemId }; if (item.SourceType == SourceType.Channel) { dto.SourceType = item.SourceType.ToString(); } if (fields.Contains(ItemFields.People)) { AttachPeople(dto, item); } if (fields.Contains(ItemFields.PrimaryImageAspectRatio)) { try { AttachPrimaryImageAspectRatio(dto, item); } catch (Exception ex) { // Have to use a catch-all unfortunately because some .net image methods throw plain Exceptions _logger.ErrorException("Error generating PrimaryImageAspectRatio for {0}", ex, item.Name); } } if (fields.Contains(ItemFields.DisplayPreferencesId)) { dto.DisplayPreferencesId = item.DisplayPreferencesId.ToString("N"); } if (user != null) { await AttachUserSpecificInfo(dto, item, user, options).ConfigureAwait(false); } var hasMediaSources = item as IHasMediaSources; if (hasMediaSources != null) { if (fields.Contains(ItemFields.MediaSources)) { if (user == null) { dto.MediaSources = _mediaSourceManager().GetStaticMediaSources(hasMediaSources, true).ToList(); } else { dto.MediaSources = _mediaSourceManager().GetStaticMediaSources(hasMediaSources, true, user).ToList(); } } } if (fields.Contains(ItemFields.Studios)) { AttachStudios(dto, item); } AttachBasicFields(dto, item, owner, options); var collectionFolder = item as ICollectionFolder; if (collectionFolder != null) { dto.OriginalCollectionType = collectionFolder.CollectionType; dto.CollectionType = user == null ? collectionFolder.CollectionType : collectionFolder.GetViewType(user); } if (fields.Contains(ItemFields.CanDelete)) { dto.CanDelete = user == null ? item.CanDelete() : item.CanDelete(user); } if (fields.Contains(ItemFields.CanDownload)) { dto.CanDownload = user == null ? item.CanDownload() : item.CanDownload(user); } if (fields.Contains(ItemFields.Etag)) { dto.Etag = item.GetEtag(user); } if (item is ILiveTvRecording) { _livetvManager().AddInfoToRecordingDto(item, dto, user); } return dto; }