public void ShouldFilterActiveItems() { _itemFilters = new ItemFilters(); var items = new List <Item> { new Item() { Id = 1, LastChecked = DateTime.MinValue, CheckInterval = 10000, IsActive = true }, new Item() { Id = 2, LastChecked = DateTime.MinValue, CheckInterval = 10000, IsActive = false }, new Item() { Id = 3, LastChecked = DateTime.MinValue, CheckInterval = 300000, IsActive = true } }; var expectedItems = items.Where(x => x.Id != 2).ToList(); var actualItems = _itemFilters.GetScheduledList(items); Assert.AreEqual(expectedItems, actualItems); }
public void ShouldFilterByCheckInterval() { _itemFilters = new ItemFilters(); var items = new List <Item> { new Item() { Id = 1, CheckInterval = 10, LastChecked = DateTime.Now.AddMilliseconds(-10), IsActive = true }, new Item() { Id = 2, CheckInterval = 10, LastChecked = DateTime.Now.AddMilliseconds(-9), IsActive = false }, new Item() { Id = 3, CheckInterval = 10, LastChecked = DateTime.Now.AddMilliseconds(-11), IsActive = true } }; var expectedItems = items.Where(x => x.Id != 2).ToList(); var actualItems = _itemFilters.GetScheduledList(items); Assert.AreEqual(expectedItems, actualItems); }
public ClipboardToolboxNode(string text) { Text = text; ItemFilters.Add(filterAtt); Category = category; Icon = icon; }
public UIClassifiers(RecipeGraphState main) : base(main) { _filters = new ItemFilters(); var panel = new UIPanel() { AnchorPoint = new Vector2(0.5f, 0.5f), SizeFactor = new Vector2(1, 1), }; _list = new UITreeList() { AnchorPoint = new Vector2(0.5f, 0.5f), SizeFactor = new Vector2(1, 1), Size = new Vector2(-10, -10), }; var scroll = new UIScrollBarV() { AnchorPoint = new Vector2(1, 0.5f), Pivot = new Vector2(1, 0.5f), }; _list.SetScrollBarV(scroll); panel.AppendChild(_list); foreach (var pair in _filters.ModFilters) { List <UITreeNode> itemcls = new List <UITreeNode>(); foreach (var pair2 in _filters.Filters) { var citem = new UIClassifierItem(pair2.Value.Name, pair2.Value.Texture) { Name = pair.Key + " " + pair2.Key, SizeFactor = new Vector2(1f, 0f), Size = new Vector2(0, 36f), }; citem.OnClick += Button_OnClick; itemcls.Add(new UITreeNode(citem, new List <UITreeNode>())); } var moditem = new UIClassifierItem(pair.Value.Name, pair.Value.Texture) { Name = pair.Key, SizeFactor = new Vector2(1f, 0f), Size = new Vector2(0, 36f), }; var node = new UITreeNode(moditem, itemcls); moditem.OnClick += Button_OnClick; _list.AddElement(node); if (pair.Key == "All") { _list.SelectedElement = node.DisplayElement; } } AppendChild(panel); }
private void Button_OnClick(UIEditor.UILib.Events.UIMouseEvent e, UIEditor.UILib.UIElement sender) { var split = sender.Name.Split(' '); if (split.Length == 1) { MainState.Browser.ApplyFilter(_filters.ModFilters[sender.Name]); } else { MainState.Browser.ApplyFilter(ItemFilters.CombineFilters(_filters.ModFilters[split[0]], _filters.Filters[split[1]])); } }
public static bool CheckContainsAnyItem(string Path, ItemFilters Filter) { if (string.IsNullOrWhiteSpace(Path)) { throw new ArgumentException("Argument could not be empty", nameof(Path)); } IntPtr Ptr = FindFirstFileExFromApp(System.IO.Path.Combine(Path, "*"), FINDEX_INFO_LEVELS.FindExInfoBasic, out WIN32_FIND_DATA Data, FINDEX_SEARCH_OPS.FindExSearchNameMatch, IntPtr.Zero, FIND_FIRST_EX_LARGE_FETCH); try { if (Ptr.ToInt64() != -1) { do { FileAttributes Attribute = (FileAttributes)Data.dwFileAttributes; if (!Attribute.HasFlag(FileAttributes.System)) { if (Attribute.HasFlag(FileAttributes.Directory) && Filter.HasFlag(ItemFilters.Folder)) { if (Data.cFileName != "." && Data.cFileName != "..") { return(true); } } else if (Filter.HasFlag(ItemFilters.File) && !Data.cFileName.EndsWith(".url", StringComparison.OrdinalIgnoreCase)) { return(true); } } }while (FindNextFile(Ptr, out Data)); return(false); } else { LogTracer.Log(new Win32Exception(Marshal.GetLastWin32Error())); return(false); } } catch { return(false); } finally { FindClose(Ptr); } }
public EmailNotificationWorker(string connectionString, ILog logger) //netinka pavadinimas worker { if (connectionString == null) { throw new ArgumentException("connectionString"); } if (logger == null) { throw new ArgumentException("logger"); } _connectionString = connectionString; _logger = logger; _usersRepository = new UsersRepository(_connectionString); _itemsRepository = new ItemsRepository(_connectionString); _screenshotRepository = new ScreenshotRepository(_connectionString); _itemFilters = new ItemFilters(); }
public async Task GetItemsAsync() { (JellyfinClient client, Mock <MockHandler> handlerMock) = CreateMockClient(); var responseContent = MockUtils.GetFileContents(Path.Combine("Items", "GetItemsAsync.json")); handlerMock.Setup(p => p.SendAsync(It.IsAny <HttpMethod>(), It.IsAny <string>())).Returns(MockUtils.Success(responseContent)); var items = await client.GetItemsAsync(Guid.NewGuid().ToString()); responseContent = MockUtils.GetFileContents(Path.Combine("Items", "GetItemsAsync2.json")); handlerMock.Setup(p => p.SendAsync(It.IsAny <HttpMethod>(), It.IsAny <string>())).Returns(MockUtils.Success(responseContent)); ItemFilters filters = ItemFilters.Create().FilterByParentId(items.Items[0].Id); items = await client.GetItemsAsync(Guid.NewGuid().ToString(), filters); Assert.AreEqual(1, items.Items.OfType <FolderItem>().Count()); Assert.AreEqual(7, items.Items.OfType <MovieItem>().Count()); var fMovie = items.Items.OfType <MovieItem>().Where(p => p.Name == "Ford v Ferrari").SingleOrDefault(); Assert.IsNotNull(fMovie); Assert.AreEqual(1, fMovie.ImageTags.Count()); }
public async Task <bool> CheckContainsAnyItemAsync(ItemFilters Filter = ItemFilters.File | ItemFilters.Folder) { if (WIN_Native_API.CheckLocationAvailability(Path)) { return(await Task.Run(() => { return WIN_Native_API.CheckContainsAnyItem(Path, Filter); })); } else { LogTracer.Log($"Native API could not found the path: \"{Path}\", fall back to UWP storage API"); try { if (await GetStorageItemAsync().ConfigureAwait(true) is StorageFolder Folder) { if (Filter.HasFlag(ItemFilters.File)) { return((await Folder.GetFilesAsync(CommonFileQuery.DefaultQuery, 0, 1)).Any()); } if (Filter.HasFlag(ItemFilters.Folder)) { return((await Folder.GetFoldersAsync(CommonFolderQuery.DefaultQuery, 0, 1)).Any()); } } return(false); } catch (Exception ex) { LogTracer.Log(ex, $"{nameof(CheckContainsAnyItemAsync)} failed for uwp API"); return(false); } } }
public async Task <List <FileSystemStorageItemBase> > GetChildItemsAsync(bool IncludeHiddenItems, bool IncludeSystemItem, ItemFilters Filter = ItemFilters.File | ItemFilters.Folder) { if (WIN_Native_API.CheckLocationAvailability(Path)) { return(WIN_Native_API.GetStorageItems(Path, IncludeHiddenItems, IncludeSystemItem, Filter)); } else { LogTracer.Log($"Native API could not enum subitems in path: \"{Path}\", fall back to UWP storage API"); try { if (await GetStorageItemAsync() is StorageFolder Folder) { QueryOptions Options = new QueryOptions { FolderDepth = FolderDepth.Shallow, IndexerOption = IndexerOption.DoNotUseIndexer }; Options.SetThumbnailPrefetch(ThumbnailMode.ListView, 150, ThumbnailOptions.UseCurrentScale); Options.SetPropertyPrefetch(PropertyPrefetchOptions.BasicProperties, new string[] { "System.Size", "System.DateModified" }); StorageItemQueryResult Query = Folder.CreateItemQueryWithOptions(Options); List <FileSystemStorageItemBase> Result = new List <FileSystemStorageItemBase>(); for (uint i = 0; ; i += 25) { IReadOnlyList <IStorageItem> ReadOnlyItemList = await Query.GetItemsAsync(i, 25); if (ReadOnlyItemList.Count > 0) { foreach (IStorageItem Item in ReadOnlyItemList.Where((Item) => (Item.IsOfType(StorageItemTypes.Folder) && Filter.HasFlag(ItemFilters.Folder)) || (Item.IsOfType(StorageItemTypes.File) && Filter.HasFlag(ItemFilters.File)))) { if (Item is StorageFolder SubFolder) { Result.Add(new FileSystemStorageFolder(SubFolder, await SubFolder.GetModifiedTimeAsync())); } else if (Item is StorageFile SubFile) { Result.Add(await CreateFromStorageItemAsync(SubFile)); } } } else { break; } } return(Result); } else { return(new List <FileSystemStorageItemBase>(0)); } } catch { LogTracer.Log($"UWP API could not enum subitems in path: \"{Path}\""); return(new List <FileSystemStorageItemBase>(0)); } } }
public TextToolboxNode(string text) { Text = text; ItemFilters.Add(new ToolboxItemFilterAttribute("text/plain", ToolboxItemFilterType.Allow)); }
public async Task <QueryResult <EpisodeItem> > GetEpisodes(string userId, string showId, string seasonId) { ItemFilters filters = ItemFilters.Create().FilterByUserId(userId).FilterBySeasonId(seasonId).IncludeField(nameof(EpisodeItem.Overview)).IncludeField(nameof(EpisodeItem.MediaStreams)); return(await DoGet <QueryResult <EpisodeItem> >($"Shows/{showId}/Episodes", filters)); }
public async Task <QueryResult <SeasonItem> > GetSeasons(string userId, string showId) { ItemFilters filters = ItemFilters.Create().FilterByUserId(userId); return(await DoGet <QueryResult <SeasonItem> >($"Shows/{showId}/Seasons", filters)); }
public TemplateToolboxNode(CodeTemplate template) { this.Template = template; ItemFilters.Add(new ToolboxItemFilterAttribute("text/plain", ToolboxItemFilterType.Allow)); }
public override Task <List <FileSystemStorageItemBase> > GetChildItemsAsync(bool IncludeHiddenItems, bool IncludeSystemItem, ItemFilters Filter = ItemFilters.File | ItemFilters.Folder) { return(Task.FromResult(new List <FileSystemStorageItemBase>(0))); }
public SnippetToolboxNode(ExpansionTemplate template) { this.Template = template; ItemFilters.Add(new ToolboxItemFilterAttribute("text/plain", ToolboxItemFilterType.Allow)); }
public async Task <QueryResult <EpisodeItem> > GetNextEpisode(string userId, string showId) { ItemFilters filters = ItemFilters.Create().FilterByUserId(userId).FilterBySeriesId(showId); return(await DoGet <QueryResult <EpisodeItem> >($"Shows/NextUp", filters)); }
public override Task <IReadOnlyList <FileSystemStorageItemBase> > GetChildItemsAsync(bool IncludeHiddenItems, bool IncludeSystemItem, uint MaxNumLimit = uint.MaxValue, ItemFilters Filter = ItemFilters.File | ItemFilters.Folder, Func <string, bool> AdvanceFilter = null) { return(Task.FromResult <IReadOnlyList <FileSystemStorageItemBase> >(new List <FileSystemStorageItemBase>(0))); }
public async Task <QueryResult <BaseItem> > GetItemsInProgressAsync(string userId, ItemFilters filters = null) { return(await DoGet <QueryResult <BaseItem> >($"Users/{userId}/Items/Resume", filters)); }
public static List <FileSystemStorageItemBase> GetStorageItems(StorageFolder Folder, bool IncludeHiddenItem, ItemFilters Filter) { if (Folder == null) { throw new ArgumentNullException(nameof(Folder), "Argument could not be null"); } IntPtr Ptr = FindFirstFileExFromApp(Path.Combine(Folder.Path, "*"), FINDEX_INFO_LEVELS.FindExInfoBasic, out WIN32_FIND_DATA Data, FINDEX_SEARCH_OPS.FindExSearchNameMatch, IntPtr.Zero, FIND_FIRST_EX_LARGE_FETCH); try { if (Ptr.ToInt64() != -1) { List <FileSystemStorageItemBase> Result = new List <FileSystemStorageItemBase>(); do { FileAttributes Attribute = (FileAttributes)Data.dwFileAttributes; if (IncludeHiddenItem || !Attribute.HasFlag(FileAttributes.Hidden)) { if (Attribute.HasFlag(FileAttributes.Directory) && Filter.HasFlag(ItemFilters.Folder)) { if (Data.cFileName != "." && Data.cFileName != "..") { FileTimeToSystemTime(ref Data.ftLastWriteTime, out SYSTEMTIME ModTime); DateTime ModifiedTime = new DateTime(ModTime.Year, ModTime.Month, ModTime.Day, ModTime.Hour, ModTime.Minute, ModTime.Second, ModTime.Milliseconds, DateTimeKind.Utc); if (Attribute.HasFlag(FileAttributes.Hidden)) { Result.Add(new HiddenStorageItem(Data, StorageItemTypes.Folder, Path.Combine(Folder.Path, Data.cFileName), ModifiedTime)); } else { Result.Add(new FileSystemStorageItemBase(Data, StorageItemTypes.Folder, Path.Combine(Folder.Path, Data.cFileName), ModifiedTime)); } } } else if (Filter.HasFlag(ItemFilters.File)) { FileTimeToSystemTime(ref Data.ftLastWriteTime, out SYSTEMTIME ModTime); DateTime ModifiedTime = new DateTime(ModTime.Year, ModTime.Month, ModTime.Day, ModTime.Hour, ModTime.Minute, ModTime.Second, ModTime.Milliseconds, DateTimeKind.Utc); if (Attribute.HasFlag(FileAttributes.Hidden)) { Result.Add(new HiddenStorageItem(Data, StorageItemTypes.File, Path.Combine(Folder.Path, Data.cFileName), ModifiedTime)); } else { if (!Data.cFileName.EndsWith(".url", StringComparison.OrdinalIgnoreCase)) { if (Data.cFileName.EndsWith(".lnk", StringComparison.OrdinalIgnoreCase)) { Result.Add(new HyperlinkStorageItem(Data, Path.Combine(Folder.Path, Data.cFileName), ModifiedTime)); } else { Result.Add(new FileSystemStorageItemBase(Data, StorageItemTypes.File, Path.Combine(Folder.Path, Data.cFileName), ModifiedTime)); } } } } } }while (FindNextFile(Ptr, out Data)); return(Result); } else { LogTracer.Log(new Win32Exception(Marshal.GetLastWin32Error())); return(new List <FileSystemStorageItemBase>()); } } catch { return(new List <FileSystemStorageItemBase>()); } finally { FindClose(Ptr); } }
public async Task <FiltersResponse> GetFilters(string userId, ItemFilters filters = null) { //filters.FilterByUserId //https://jellyfin.jetflix.media/Items/Filters?UserId=95623407d249461a974942a3109af020&IncludeItemTypes=Series return(await DoGet <FiltersResponse>($"Items/Filters?UserId={userId}", filters)); }
public async Task <QueryResult <BaseItem> > GetNextUpShowsAsync(ItemFilters filters) { return(await DoGet <QueryResult <BaseItem> >($"/Shows/NextUp", filters)); }
public static async Task <GetNewsItemSummaries <T> > GetNewsItemSummariesAsync <T>(IDataFactory data, GetNewsInput input, int nbChild, ItemDataModel itemDataModel, Func <ItemDataModel, Task <T> > getItemFunc) where T : GetNewsItemSummary, new() { var newsItemResult = new List <T>(); var itemFilter = new ItemFilters { Limit = nbChild, ParentId = itemDataModel.Id, SortDescending = true, States = input.States, Tags = input.Tags }; if (input.FilterIndex.HasValue) { itemFilter.IndexLt = input.FilterIndex; itemFilter.SortDescending = true; } var childs = await data.ItemRepository.GetItemsAsync(input.SiteId, itemFilter); var tasks = new List <Task <T> >(); foreach (var dataModel in childs.OrderByDescending(i => i.Index)) { var task = getItemFunc(dataModel); tasks.Add(task); } await Task.WhenAll(tasks); foreach (var task in tasks) { var resultItem = task.Result; if (resultItem != null) { newsItemResult.Add(resultItem); } } // recherche du next var nbNext = await NbNext(data, input.SiteId, childs, itemDataModel, input.States, input.Tags); var hasPrevious = false; var idPrevious = string.Empty; if (input.FilterIndex.HasValue) { var previousItemFilter = new ItemFilters { Limit = nbChild, ParentId = itemDataModel.Id, SortAscending = true, IndexGt = input.FilterIndex, States = input.States, Tags = input.Tags, }; var previousChilds = await data.ItemRepository.GetItemsAsync(input.SiteId, previousItemFilter); hasPrevious = previousChilds.Count > 0; if (previousChilds.Count == nbChild) { idPrevious = GetMaxIndex(previousChilds).ToString(); } } var idNext = GetMinIndex(childs).ToString(); var hasNext = nbNext > 0; var result = new GetNewsItemSummaries <T>() { HasNext = hasNext, HasPrevious = hasPrevious, IdNext = idNext, IdPrevious = idPrevious, Items = newsItemResult }; return(result); }
private string GetFilters(ItemFilters itemFilters) { int val = 0; //for each value increment int findx = 0; // for itemFilter Index string searl = ""; if (itemFilters.AvailableToUsed) { searl += "&itemFilter(" + findx.ToString() + ").name=AvailableTo"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.AvailableTo; findx++; } if (itemFilters.BestOfferOnly) { searl += "&itemFilter(" + findx.ToString() + ").name=BestOfferOnly"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true"; findx++; } if (itemFilters.CharityOnly) { searl += "&itemFilter(" + findx.ToString() + ").name=CharityOnly"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true"; findx++; } if (itemFilters.ConditionTypes.Count > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=Condition"; foreach (int elt in itemFilters.ConditionTypes) { // object op = Enum.Parse(typeof(findItemsAdvanced.ItemFilters.eBayConditionType), elt.ToString()); // object op = Enum.Parse(typeof(ItemFilters.eBayConditionType), elt.ToString()); //test // searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=1000"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString(); val++; } val = 0; //reset after for each new itemFilter id findx++; // increment itemFilter Index } if (itemFilters.CurrencyUsed) { searl += "&itemFilter(" + findx.ToString() + ").name=Currency"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.Currency; findx++; } if (itemFilters.EndTimeFrom > DateTime.UtcNow) { searl += "&itemFilter(" + findx.ToString() + ").name=EndTimeFrom"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.EndTimeFrom.ToString("o"); findx++; } if (itemFilters.EndTimeTo > DateTime.UtcNow) { searl += "&itemFilter(" + findx.ToString() + ").name=EndTimeTo"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.EndTimeTo.ToString("o"); findx++; } if (itemFilters.ExcludeAutoPay) { searl += "&itemFilter(" + findx.ToString() + ").name=ExcludeAutoPay"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true"; findx++; } if (itemFilters.ExcludeCategories.Count > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=ExcludeCategory"; foreach (int elt in itemFilters.ExcludeCategories) { searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString(); val++; } val = 0; //reset after for each new itemFilter id findx++; // increment itemFilter Index } if (itemFilters.ExcludeSellers.Count > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=ExcludeSeller"; foreach (string elt in itemFilters.ExcludeSellers) { searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString(); val++; } val = 0; //reset after for each new itemFilter id findx++; // increment itemFilter Index } if (itemFilters.ExpeditedShippingTypeUsed) { searl += "&itemFilter(" + findx.ToString() + ").name=ExpeditedShippingType"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.ExpeditedShipping; findx++; // increment itemFilter Index } if (itemFilters.FeaturedOnly) { searl += "&itemFilter(" + findx.ToString() + ").name=FeaturedOnly"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true"; findx++; // increment itemFilter Index } if ((itemFilters.FeedbackScoreMin < itemFilters.FeedbackScoreMax) & itemFilters.FeedbackScoreMin > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=FeedbackScoreMin"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.FeedbackScoreMin; findx++; // increment itemFilter Index } if ((itemFilters.FeedbackScoreMax > itemFilters.FeedbackScoreMin) & itemFilters.FeedbackScoreMax > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=FeedbackScoreMax"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.FeedbackScoreMax; findx++; // increment itemFilter Index } if (itemFilters.FreeShippingOnly) { searl += "&itemFilter(" + findx.ToString() + ").name=FreeShippingOnly"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true"; findx++; // increment itemFilter Index } if (itemFilters.GetItFastOnly) { searl += "&itemFilter(" + findx.ToString() + ").name=GetItFastOnly"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true"; findx++; // increment itemFilter Index } if (itemFilters.HideDuplicateItems) { searl += "&itemFilter(" + findx.ToString() + ").name=HideDuplicateItems"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true"; findx++; // increment itemFilter Index } if (itemFilters.ListedInUsed) { searl += "&itemFilter(" + findx.ToString() + ").name=ListedIn"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=EBAY-" + itemFilters.ListedIn; findx++; // increment itemFilter Index } if (itemFilters.ListingTypes.Count > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=ListingType"; foreach (ItemFilters.eBayListingType elt in itemFilters.ListingTypes) { searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString(); val++; } val = 0; //reset after for each new itemFilter id findx++; // increment itemFilter Index } if (itemFilters.LocalPickupOnly) { searl += "&itemFilter(" + findx.ToString() + ").name=LocalPickupOnly"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true"; findx++; // increment itemFilter Index } if (itemFilters.LocatedInUsed) { searl += "&itemFilter(" + findx.ToString() + ").name=LocatedIn"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.LocatedIn; findx++; // increment itemFilter Index } if (itemFilters.LotsOnly) { searl += "&itemFilter(" + findx.ToString() + ").name=LotsOnly"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true"; findx++; // increment itemFilter Index } if (itemFilters.MaxBids > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=MaxBids"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MaxBids.ToString(); findx++; // increment itemFilter Index } if (itemFilters.MaxHandlingTime > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=MaxHandlingTime"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MaxHandlingTime.ToString(); findx++; // increment itemFilter Index } if (itemFilters.MaxPrice > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=MaxPrice"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MaxPrice.ToString(); findx++; // increment itemFilter Index } if (itemFilters.MaxQuantity > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=MaxQuantity"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MaxQuantity.ToString(); findx++; // increment itemFilter Index } if (itemFilters.MinBids > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=MinBids"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MinBids.ToString(); findx++; // increment itemFilter Index } if (itemFilters.MinPrice > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=MinPrice"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MinPrice.ToString(); findx++; // increment itemFilter Index } if ((itemFilters.ModTimeFrom < DateTime.UtcNow) & (itemFilters.ModTimeFrom > new DateTime(2000, 1, 1))) { searl += "&itemFilter(" + findx.ToString() + ").name=ModTimeFrom"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.ModTimeFrom.ToString("o"); findx++; } if (itemFilters.PaymentMethodUsed) { if (itemFilters.PaymentMethods.Count > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=paymentMethod"; foreach (eBayPaymentMethod elt in itemFilters.PaymentMethods) { searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString(); val++; } val = 0; //reset after for each new itemFilter id findx++; // increment itemFilter Index } //put as list... searl += "&itemFilter(" + findx.ToString() + ").name=PaymentMethod"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.PaymentMethods.ToString(); findx++; } if (itemFilters.ReturnsAcceptedOnly) { searl += "&itemFilter(" + findx.ToString() + ").name=ReturnsAcceptedOnly"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.ReturnsAcceptedOnly.ToString(); findx++; } if (itemFilters.Sellers.Count > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=Seller"; foreach (string elt in itemFilters.Sellers) { searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString(); val++; } val = 0; //reset after for each new itemFilter id findx++; // increment itemFilter Index } if (itemFilters.BusinessTypeUsed) { searl += "&itemFilter(" + findx.ToString() + ").name=SellerBusinessType"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.BusinessType.ToString(); findx++; } if (itemFilters.TopRatedSellerOnly) { searl += "&itemFilter(" + findx.ToString() + ").name=TopRatedSellerOnly"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true"; findx++; } //last if (itemFilters.Proximity != null) { if (itemFilters.Proximity.LocalSearchOnly) { searl += "&itemFilter(" + findx.ToString() + ").name=LocalSearchOnly"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true"; findx++; // increment itemFilter Index } if (itemFilters.Proximity.MaxDistance > 0) { searl += "&itemFilter(" + findx.ToString() + ").name=MaxDistance"; searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.Proximity.MaxDistance.ToString(); findx++; // increment itemFilter Index } if (itemFilters.Proximity.BuyerPostalCode != null) { searl += "&buyerPostalCode=" + itemFilters.Proximity.BuyerPostalCode; } } return(searl); }
public static List <string> GetStorageItemsPath(string Path, bool IncludeHiddenItem, ItemFilters Filter) { if (string.IsNullOrWhiteSpace(Path)) { throw new ArgumentNullException(nameof(Path), "Argument could not be null"); } IntPtr Ptr = FindFirstFileExFromApp(System.IO.Path.Combine(Path, "*"), FINDEX_INFO_LEVELS.FindExInfoBasic, out WIN32_FIND_DATA Data, FINDEX_SEARCH_OPS.FindExSearchNameMatch, IntPtr.Zero, FIND_FIRST_EX_LARGE_FETCH); try { if (Ptr.ToInt64() != -1) { List <string> Result = new List <string>(); do { FileAttributes Attribute = (FileAttributes)Data.dwFileAttributes; if (IncludeHiddenItem || !Attribute.HasFlag(FileAttributes.Hidden)) { if (((FileAttributes)Data.dwFileAttributes).HasFlag(FileAttributes.Directory) && Filter.HasFlag(ItemFilters.Folder)) { if (Data.cFileName != "." && Data.cFileName != "..") { Result.Add(System.IO.Path.Combine(Path, Data.cFileName)); } } else if (Filter.HasFlag(ItemFilters.File)) { Result.Add(System.IO.Path.Combine(Path, Data.cFileName)); } } }while (FindNextFile(Ptr, out Data)); return(Result); } else { LogTracer.Log(new Win32Exception(Marshal.GetLastWin32Error())); return(new List <string>()); } } catch { return(new List <string>()); } finally { FindClose(Ptr); } }
public async Task <List <FileSystemStorageItemBase> > GetChildItemsAsync(bool IncludeHiddenItems, ItemFilters Filter = ItemFilters.File | ItemFilters.Folder) { if (WIN_Native_API.CheckLocationAvailability(Path)) { return(WIN_Native_API.GetStorageItems(Path, IncludeHiddenItems, Filter)); } else { LogTracer.Log($"Native API could not enum subitems in path: \"{Path}\", fall back to UWP storage API"); try { if (await GetStorageItemAsync().ConfigureAwait(true) is StorageFolder Folder) { QueryOptions Options = new QueryOptions { FolderDepth = FolderDepth.Shallow, IndexerOption = IndexerOption.UseIndexerWhenAvailable }; Options.SetThumbnailPrefetch(Windows.Storage.FileProperties.ThumbnailMode.ListView, 150, Windows.Storage.FileProperties.ThumbnailOptions.UseCurrentScale); Options.SetPropertyPrefetch(Windows.Storage.FileProperties.PropertyPrefetchOptions.BasicProperties, new string[] { "System.Size", "System.DateModified" }); StorageItemQueryResult Query = Folder.CreateItemQueryWithOptions(Options); uint Count = await Query.GetItemCountAsync(); List <FileSystemStorageItemBase> Result = new List <FileSystemStorageItemBase>(Convert.ToInt32(Count)); for (uint i = 0; i < Count; i += 30) { IReadOnlyList <IStorageItem> CurrentList = await Query.GetItemsAsync(i, 30); foreach (IStorageItem Item in CurrentList.Where((Item) => (Item.IsOfType(StorageItemTypes.Folder) && Filter.HasFlag(ItemFilters.Folder)) || (Item.IsOfType(StorageItemTypes.File) && Filter.HasFlag(ItemFilters.File)))) { if (Item is StorageFolder SubFolder) { Result.Add(new FileSystemStorageFolder(SubFolder, await SubFolder.GetThumbnailBitmapAsync().ConfigureAwait(true), await SubFolder.GetModifiedTimeAsync().ConfigureAwait(true))); } else if (Item is StorageFile SubFile) { Result.Add(new FileSystemStorageFile(SubFile, await SubFile.GetThumbnailBitmapAsync().ConfigureAwait(true), await SubFile.GetSizeRawDataAsync().ConfigureAwait(true), await SubFile.GetModifiedTimeAsync().ConfigureAwait(true))); } } } return(Result); } else { return(new List <FileSystemStorageItemBase>(0)); } } catch { LogTracer.Log($"UWP API could not enum subitems in path: \"{Path}\""); return(new List <FileSystemStorageItemBase>(0)); } } }
public override Task <bool> CheckContainsAnyItemAsync(bool IncludeHiddenItem = false, bool IncludeSystemItem = false, ItemFilters Filter = ItemFilters.File | ItemFilters.Folder) { return(Task.FromResult(false)); }
public static List <FileSystemStorageItem> GetStorageItems(string Path, bool IncludeHiddenItem, ItemFilters Filter) { if (string.IsNullOrWhiteSpace(Path)) { throw new ArgumentException("Argument could not be empty", nameof(Path)); } IntPtr Ptr = FindFirstFileExFromApp(System.IO.Path.Combine(Path, "*"), FINDEX_INFO_LEVELS.FindExInfoBasic, out WIN32_FIND_DATA Data, FINDEX_SEARCH_OPS.FindExSearchNameMatch, IntPtr.Zero, FIND_FIRST_EX_LARGE_FETCH); try { if (Ptr.ToInt64() != -1) { List <FileSystemStorageItem> Result = new List <FileSystemStorageItem>(); do { FileAttributes Attribute = (FileAttributes)Data.dwFileAttributes; if (!Attribute.HasFlag(FileAttributes.System) && (IncludeHiddenItem || !Attribute.HasFlag(FileAttributes.Hidden))) { if (Attribute.HasFlag(FileAttributes.Directory) && Filter.HasFlag(ItemFilters.Folder)) { if (Data.cFileName != "." && Data.cFileName != "..") { FileTimeToSystemTime(ref Data.ftLastWriteTime, out SYSTEMTIME ModTime); DateTime ModifiedTime = new DateTime(ModTime.Year, ModTime.Month, ModTime.Day, ModTime.Hour, ModTime.Minute, ModTime.Second, ModTime.Milliseconds, DateTimeKind.Utc); if (Attribute.HasFlag(FileAttributes.Hidden)) { Result.Add(new HiddenStorageItem(Data, StorageItemTypes.Folder, System.IO.Path.Combine(Path, Data.cFileName), ModifiedTime.ToLocalTime())); } else { Result.Add(new FileSystemStorageItem(Data, StorageItemTypes.Folder, System.IO.Path.Combine(Path, Data.cFileName), ModifiedTime.ToLocalTime())); } } } else if (Filter.HasFlag(ItemFilters.File)) { FileTimeToSystemTime(ref Data.ftLastWriteTime, out SYSTEMTIME ModTime); DateTime ModifiedTime = new DateTime(ModTime.Year, ModTime.Month, ModTime.Day, ModTime.Hour, ModTime.Minute, ModTime.Second, ModTime.Milliseconds, DateTimeKind.Utc); if (Attribute.HasFlag(FileAttributes.Hidden)) { Result.Add(new HiddenStorageItem(Data, StorageItemTypes.File, System.IO.Path.Combine(Path, Data.cFileName), ModifiedTime.ToLocalTime())); } else { if (Data.cFileName.EndsWith(".lnk") || Data.cFileName.EndsWith(".url")) { Result.Add(new HyperlinkStorageItem(Data, System.IO.Path.Combine(Path, Data.cFileName), ModifiedTime.ToLocalTime())); } else { Result.Add(new FileSystemStorageItem(Data, StorageItemTypes.File, System.IO.Path.Combine(Path, Data.cFileName), ModifiedTime.ToLocalTime())); } } } } }while (FindNextFile(Ptr, out Data)); return(Result); } else { Debug.WriteLine(new Win32Exception(Marshal.GetLastWin32Error()).Message); return(new List <FileSystemStorageItem>()); } } catch { return(new List <FileSystemStorageItem>()); } finally { FindClose(Ptr); } }