protected VideoDriveHandler(DriveInfo driveInfo, IEnumerable <Guid> extractedMIATypeIds) : base(driveInfo) { IMediaAccessor mediaAccessor = ServiceRegistration.Get <IMediaAccessor>(); ResourcePath rp = LocalFsResourceProviderBase.ToResourcePath(driveInfo.Name); IResourceAccessor ra; if (!rp.TryCreateLocalResourceAccessor(out ra)) { throw new ArgumentException(string.Format("Unable to access drive '{0}'", driveInfo.Name)); } using (ra) _mediaItem = mediaAccessor.CreateLocalMediaItem(ra, mediaAccessor.GetMetadataExtractorsForMIATypes(extractedMIATypeIds)); if (_mediaItem == null) { throw new Exception(string.Format("Could not create media item for drive '{0}'", driveInfo.Name)); } MatchWithStubs(driveInfo, new MediaItem[] { _mediaItem }); IEnumerable <MediaItem> processedItems = CertificationHelper.ProcessMediaItems(new MediaItem[] { _mediaItem }); if (processedItems.Count() == 0) { _mediaItem = null; return; } _mediaItem = processedItems.First(); SingleMediaItemAspect mia = null; MediaItemAspect.TryGetAspect(_mediaItem.Aspects, MediaAspect.Metadata, out mia); mia.SetAttribute(MediaAspect.ATTR_TITLE, mia.GetAttributeValue(MediaAspect.ATTR_TITLE) + " (" + DriveUtils.GetDriveNameWithoutRootDirectory(driveInfo) + ")"); }
public override async Task <ICollection <FilterValue> > GetAvailableValuesAsync(IEnumerable <Guid> necessaryMIATypeIds, IFilter selectAttributeFilter, IFilter filter) { IContentDirectory cd = ServiceRegistration.Get <IServerConnectionManager>().ContentDirectory; if (cd == null) { throw new NotConnectedException("The MediaLibrary is not connected"); } Guid? userProfile = null; IUserManagement userProfileDataManagement = ServiceRegistration.Get <IUserManagement>(); if (userProfileDataManagement != null && userProfileDataManagement.IsValidUser) { userProfile = userProfileDataManagement.CurrentUser.ProfileId; } IEnumerable <Guid> mias = _necessaryMIATypeIds ?? necessaryMIATypeIds; IEnumerable <Guid> optMias = _optionalMIATypeIds != null?_optionalMIATypeIds.Except(mias) : null; bool showVirtual = VirtualMediaHelper.ShowVirtualMedia(necessaryMIATypeIds); IFilter queryFilter = new FilteredRelationshipFilter(_role, _linkedRole, filter); MediaItemQuery query = new MediaItemQuery(mias, optMias, queryFilter); if (_sortInformation != null) { query.SortInformation = new List <ISortInformation> { _sortInformation } } ; IList <MediaItem> items = await cd.SearchAsync(query, true, userProfile, showVirtual); CertificationHelper.ConvertCertifications(items); IList <FilterValue> result = new List <FilterValue>(items.Count); foreach (MediaItem item in items) { string name; MediaItemAspect.TryGetAttribute(item.Aspects, MediaAspect.ATTR_TITLE, out name); result.Add(new FilterValue(name, new FilterTreePath(_role), null, item, this)); } //ToDo: Add support for an empty entry for all filtered items that don't have this relationship //The below works OK in simple cases but results in an extra, relatively long running query. Maybe this should be handled //at the server for all relationship queries... //IFilter emptyRelationshipFilter = new NotFilter(new RelationshipFilter(_linkedRole, _role, Guid.Empty)); //queryFilter = filter != null ? BooleanCombinationFilter.CombineFilters(BooleanOperator.And, filter, emptyRelationshipFilter) : emptyRelationshipFilter; //int numEmptyEntries = cd.CountMediaItems(necessaryMIATypeIds, queryFilter, true, showVirtual); //if(numEmptyEntries > 0) // result.Insert(0, new FilterValue(Consts.RES_VALUE_EMPTY_TITLE, emptyRelationshipFilter, null, this)); return(result); }
public void TestGetCertificate() { using (StreamReader reader = new StreamReader(new FileStream(@"D:\andyzone\WSEEverywhere2\AzureRestAdapter\data\Windows Azure MSDN - Visual Studio Ultimate-5-28-2013-credentials.publishsettings", FileMode.Open, FileAccess.Read))) { string publishSettings = reader.ReadToEnd(); X509Certificate2 certi = CertificationHelper.GetCertificate(publishSettings); Assert.IsTrue(certi != null); } }
public async Task <IFilter> AppendUserFilterAsync(IFilter filter, IEnumerable <Guid> filterMias) { IFilter userFilter = await CertificationHelper.GetUserCertificateFilter(filterMias); if (userFilter != null) { return(filter != null?BooleanCombinationFilter.CombineFilters(BooleanOperator.And, filter, userFilter) : userFilter); } return(filter); }
protected virtual async Task PrepareFilterTree() { if (!_rootRole.HasValue) { return; } _customFilterTree = new RelationshipFilterTree(_rootRole.Value); //Update filter by adding the user filter to the already loaded filters IFilter userFilter = await CertificationHelper.GetUserCertificateFilter(_necessaryMias); if (userFilter != null) { _customFilterTree.AddFilter(userFilter); } userFilter = await CertificationHelper.GetUserCertificateFilter(new[] { SeriesAspect.ASPECT_ID }); if (userFilter != null) { _customFilterTree.AddFilter(userFilter, new FilterTreePath(SeriesAspect.ROLE_SERIES)); } }
public override async Task <IEnumerable <MediaItem> > GetAllMediaItems() { IContentDirectory cd = ServiceRegistration.Get <IServerConnectionManager>().ContentDirectory; if (cd == null) { return(new List <MediaItem>()); } Guid? userProfile = null; IUserManagement userProfileDataManagement = ServiceRegistration.Get <IUserManagement>(); if (userProfileDataManagement != null && userProfileDataManagement.IsValidUser) { userProfile = userProfileDataManagement.CurrentUser.ProfileId; } bool showVirtual = VirtualMediaHelper.ShowVirtualMedia(_query.NecessaryRequestedMIATypeIDs); IList <MediaItem> mediaItems = await cd.SearchAsync(_query, _onlyOnline, userProfile, showVirtual); CertificationHelper.ConvertCertifications(mediaItems); return(mediaItems); }
protected override async Task PrepareAsync() { await base.PrepareAsync(); //Update filter by adding the user filter to the already loaded filters IFilter userFilter = await CertificationHelper.GetUserCertificateFilter(_necessaryMias); if (userFilter != null) { _filter = BooleanCombinationFilter.CombineFilters(BooleanOperator.And, userFilter, BooleanCombinationFilter.CombineFilters(BooleanOperator.And, _filters)); } else { _filter = BooleanCombinationFilter.CombineFilters(BooleanOperator.And, _filters); } _defaultScreen = new MoviesShowItemsScreenData(_genericPlayableItemCreatorDelegate); _availableScreens = new List <AbstractScreenData> { _defaultScreen, new MovieFilterByGenreScreenData(), new MovieFilterByCollectionScreenData(), new VideosFilterByPlayCountScreenData(), new MovieFilterByCertificationScreenData(), new MovieFilterByActorScreenData(), new MovieFilterByCharacterScreenData(), new MovieFilterByDirectorScreenData(), new MovieFilterByWriterScreenData(), new MovieFilterByCompanyScreenData(), new VideosFilterByYearScreenData(), new VideosFilterBySystemScreenData(), new VideosSimpleSearchScreenData(_genericPlayableItemCreatorDelegate), }; _defaultSorting = new SortByTitle(); _availableSortings = new List <Sorting.Sorting> { _defaultSorting, new SortBySortTitle(), new SortByName(), new SortByYear(), new VideoSortByFirstGenre(), new MovieSortByCertification(), new VideoSortByDuration(), new VideoSortByFirstActor(), new VideoSortByFirstDirector(), new VideoSortByFirstWriter(), new VideoSortBySize(), new VideoSortByAspectRatio(), new SortByAddedDate(), new SortBySystem(), }; _defaultGrouping = null; _availableGroupings = new List <Sorting.Sorting> { //_defaultGrouping, new SortByTitle(), new SortBySortTitle(), new SortByName(), new SortByYear(), new VideoSortByFirstGenre(), new MovieSortByCertification(), new VideoSortByDuration(), new VideoSortByFirstActor(), new VideoSortByFirstDirector(), new VideoSortByFirstWriter(), new VideoSortBySize(), new VideoSortByAspectRatio(), new SortByAddedDate(), new SortBySystem(), }; }
protected internal async Task <Tuple <IList <MediaItem>, IList <ViewSpecification> > > ReLoadItemsAndSubViewSpecificationsAsync() { IList <MediaItem> mediaItems = null; IList <ViewSpecification> subViewSpecifications = null; IContentDirectory cd = ServiceRegistration.Get <IServerConnectionManager>().ContentDirectory; if (cd == null) { return(new Tuple <IList <MediaItem>, IList <ViewSpecification> >(null, null)); } Guid? userProfile = null; IUserManagement userProfileDataManagement = ServiceRegistration.Get <IUserManagement>(); if (userProfileDataManagement != null && userProfileDataManagement.IsValidUser) { userProfile = userProfileDataManagement.CurrentUser.ProfileId; } bool showVirtual = VirtualMediaHelper.ShowVirtualMedia(_query.NecessaryRequestedMIATypeIDs); try { if (MaxNumItems.HasValue) { // First request value groups. That is a performance consideration: // If we have many items, we need groups. If we have few items, we don't need the groups but simply do a search. // We request the groups first to make it faster for the many items case. In the case of few items, both groups and items // are requested which doesn't take so long because there are only few items. IList <MLQueryResultGroup> groups = await cd.GroupValueGroupsAsync(MediaAspect.ATTR_TITLE, null, ProjectionFunction.None, _query.NecessaryRequestedMIATypeIDs, _query.Filter, _onlyOnline, GroupingFunction.FirstCharacter, showVirtual); long numItems = groups.Aggregate <MLQueryResultGroup, long>(0, (current, group) => current + group.NumItemsInGroup); if (numItems > MaxNumItems.Value) { // Group items mediaItems = new List <MediaItem>(0); subViewSpecifications = new List <ViewSpecification>(groups.Count); foreach (MLQueryResultGroup group in groups) { MediaLibraryQueryViewSpecification subViewSpecification = CreateSubViewSpecification(string.Format("{0}", group.GroupKey), _filterPath, group.AdditionalFilter, null); subViewSpecification.MaxNumItems = null; subViewSpecification._absNumItems = group.NumItemsInGroup; subViewSpecifications.Add(subViewSpecification); } return(new Tuple <IList <MediaItem>, IList <ViewSpecification> >(mediaItems, subViewSpecifications)); } // Else: No grouping } // Else: No grouping mediaItems = await cd.SearchAsync(_query, _onlyOnline, userProfile, showVirtual); CertificationHelper.ConvertCertifications(mediaItems); subViewSpecifications = new List <ViewSpecification>(0); return(new Tuple <IList <MediaItem>, IList <ViewSpecification> >(mediaItems, subViewSpecifications)); } catch (UPnPRemoteException e) { ServiceRegistration.Get <ILogger>().Error("SimpleTextSearchViewSpecification.ReLoadItemsAndSubViewSpecifications: Error requesting server", e); return(new Tuple <IList <MediaItem>, IList <ViewSpecification> >(null, null)); } }