public static bool CanHandle(Uri uri) { if (uri is null) { return(false); } _RewriteUri(ref uri); if (uri.Host != DomainProvider.Eh.RootUri.Host && uri.Host != DomainProvider.Ex.RootUri.Host) { return(false); } var data = new UriHandlerData(uri); foreach (var item in handlers) { if (item.CanHandle(data)) { _PreviousData = data; _PreviousHandler = item; return(true); } } return(false); }
public override async Task <LaunchResult> HandleAsync(UriHandlerData data) { ImageInfo.TryParse(data, out var info); var gInfo = await info.FetchGalleryInfoAsync(); return(new GalleryLaunchResult(gInfo, info.PageId - 1, GalleryLaunchStatus.Image)); }
public override IAsyncOperation <LaunchResult> HandleAsync(UriHandlerData data) { var keyword = UnescapeKeyword(data.Queries.GetString("f_search") ?? ""); var category = Client.Current.Favorites.All; var ap = data.Queries.GetBoolean("f_apply"); { var cat = data.Queries.GetString("favcat") ?? "all"; if (cat != "all") { var index = cat.QueryValueAsInt32(); index = Math.Max(0, index); index = Math.Min(9, index); category = Client.Current.Favorites[index]; } } if (!ap) { return(AsyncOperation <LaunchResult> .CreateCompleted(new SearchLaunchResult(category.Search("")))); } else { return(AsyncOperation <LaunchResult> .CreateCompleted(new SearchLaunchResult(category.Search(keyword)))); } }
public override IAsyncOperation <LaunchResult> HandleAsync(UriHandlerData data) { var sr = data.Queries.ContainsKey("f_shash") ? handleFileSearch(data) : handleSearch(data); return(AsyncOperation <LaunchResult> .CreateCompleted(new SearchLaunchResult(sr))); }
public override SearchLaunchResult Handle(UriHandlerData data) { var category = categoryDic[data.Path0]; var keyword = GetKeyword(data); var advanced = GetAdvancedSearchOptions(data); return(new SearchLaunchResult(Client.Current.Search(keyword, category, advanced))); }
public override IAsyncOperation <LaunchResult> HandleAsync(UriHandlerData data) { var category = categoryDic[data.Path0]; var keyword = GetKeyword(data); var advanced = GetAdvancedSearchOptions(data); return(AsyncOperation <LaunchResult> .CreateCompleted(new SearchLaunchResult(Client.Current.Search(keyword, category, advanced)))); }
public override SearchLaunchResult Handle(UriHandlerData data) { var sr = data.Queries.GetString("f_shash").IsNullOrEmpty() ? handleSearch(data) : (CategorySearchResult)handleFileSearch(data); return(new SearchLaunchResult(sr)); }
private CategorySearchResult handleSearch(UriHandlerData data) { var keyword = GetKeyword(data); var category = GetCategory(data); var advanced = GetAdvancedSearchOptions(data); return(Client.Current.Search(keyword, category, advanced)); }
public override IAsyncOperation <LaunchResult> HandleAsync(UriHandlerData data) { var sr = data.Queries.GetString("f_shash").IsNullOrEmpty() ? handleSearch(data) : handleFileSearch(data); return(AsyncOperation <LaunchResult> .CreateCompleted(new SearchLaunchResult(sr))); }
protected static string GetKeyword(UriHandlerData data) { if (!data.Queries.TryGetValue("f_search", out var r)) { r = ""; } return(UnescapeKeyword(r)); }
public override IAsyncOperation <LaunchResult> HandleAsync(UriHandlerData data) { ImageInfo.TryParse(data, out var info); return(Run(async token => { var gInfo = await info.FetchGalleryInfoAsync(); return (LaunchResult) new GalleryLaunchResult(gInfo, info.PageID, GalleryLaunchStatus.Image); })); }
protected static AdvancedSearchOptions GetAdvancedSearchOptions(UriHandlerData data) { var advanced = new AdvancedSearchOptions(); foreach (var item in data.Queries) { var b = item.Value.QueryValueAsBoolean(); switch (item.Key) { case "f_sname": advanced.SearchName = b; break; case "f_stags": advanced.SearchTags = b; break; case "f_sdesc": advanced.SearchDescription = b; break; case "f_storr": advanced.SearchTorrentFilenames = b; break; case "f_sto": advanced.GalleriesWithTorrentsOnly = b; break; case "f_sdt1": advanced.SearchLowPowerTags = b; break; case "f_sdt2": advanced.SearchDownvotedTags = b; break; case "f_sh": advanced.ShowExpungedGalleries = b; break; case "f_sr": advanced.SearchMinimumRating = b; break; case "f_srdd": advanced.MinimumRating = item.Value.QueryValueAsInt32(); break; case "skip_mastertags": advanced.SkipMasterTags = b; break; } } return(advanced); }
private FileSearchResult handleFileSearch(UriHandlerData data) { var filename = data.Queries.GetString("fs_from"); var sm = data.Queries.GetBoolean("fs_similar"); var cv = data.Queries.GetBoolean("fs_covers"); var exp = data.Queries.GetBoolean("fs_exp"); var hashes = (data.Queries.GetString("f_shash") ?? "") .Split(",; ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries) .Where(str => str.All(ch => ('0' <= ch && ch <= '9') || ('a' <= ch && ch <= 'f') || ('A' <= ch && ch <= 'F'))) .Select(SHA1Value.Parse); var otherdata = handleSearch(data); return(FileSearchResult.Search(otherdata.Keyword, otherdata.Category, hashes, filename, sm, cv, exp)); }
protected static Category GetCategory(UriHandlerData data) { var categoryVal = data.Queries.GetInt32("f_cats"); if (categoryVal < 0) { categoryVal = 0; } if (categoryVal > (int)Category.All) { categoryVal = (int)Category.All; } return((Category)((int)Category.All - categoryVal)); }
public override SearchLaunchResult Handle(UriHandlerData data) { _CategoryDic.TryGetValue(data.Path0, out var cate0); uint.TryParse(data.Path0, out var cate1ui); if (cate1ui == 0) { cate1ui = uint.MaxValue; } var cate1 = (~(Category)cate1ui) & Category.All; var cate2 = GetCategory(data); var keyword = GetKeyword(data); var advanced = GetAdvancedSearchOptions(data); return(new SearchLaunchResult(Client.Current.Search(keyword, cate0 | cate1 | cate2, advanced))); }
public override SearchLaunchResult Handle(UriHandlerData data) { var keyword = UnescapeKeyword(data.Queries.GetString("f_search") ?? ""); var category = Client.Current.Favorites.All; var cat = data.Queries.GetString("favcat") ?? "all"; if (cat != "all") { var index = data.Queries.GetInt32("favcat"); index = Math.Max(0, index); index = Math.Min(9, index); category = Client.Current.Favorites[index]; } return(new SearchLaunchResult(category.Search(keyword))); }
public override SearchLaunchResult Handle(UriHandlerData data) { var v = unescape2(data.Paths[1]); var category = GetCategory(data); var advanced = GetAdvancedSearchOptions(data); switch (data.Path0) { case "tag": return(new SearchLaunchResult(Tag.Parse(v.TrimEnd(trim)).Search(category, advanced))); case "uploader": return(new SearchLaunchResult(Client.Current.Search(v, null, category, advanced))); } throw new NotSupportedException($"Unsupported uri `{data.Uri}`."); }
public override IAsyncOperation <LaunchResult> HandleAsync(UriHandlerData data) { var v = unescape2(data.Paths[1]); var category = GetCategory(data); var advanced = GetAdvancedSearchOptions(data); switch (data.Path0) { case "tag": return(AsyncOperation <LaunchResult> .CreateCompleted(new SearchLaunchResult(Tag.Parse(v.TrimEnd(trim)).Search(category, advanced)))); case "uploader": return(AsyncOperation <LaunchResult> .CreateCompleted(new SearchLaunchResult(Client.Current.Search(v, null, category, advanced)))); } return(AsyncOperation <LaunchResult> .CreateFault(new NotSupportedException("Unsupported uri."))); }
public override bool CanHandle(UriHandlerData data) { if (data.Paths.Count != 2) { return(false); } switch (data.Path0) { case "tag": return(Tag.TryParse(data.Paths[1].Unescape2().TrimEnd(trim), out var ignore)); case "uploader": return(true); default: return(false); } }
public static IAsyncOperation <LaunchResult> HandleAsync(Uri uri) { var data = previousData; var h = previousHandler; if (data?.Uri == uri && h != null && h.CanHandle(data)) { return(h.HandleAsync(data)); } data = new UriHandlerData(uri); foreach (var item in handlers) { if (item.CanHandle(data)) { return(item.HandleAsync(data)); } } throw new NotSupportedException("Unsupported uri."); }
public override IAsyncOperation <LaunchResult> HandleAsync(UriHandlerData data) { var keyword = ""; var category = (FavoriteCategory)null; var ap = false; foreach (var item in data.Queries) { switch (item.Key) { case "f_apply": ap = item.Value.QueryValueAsBoolean(); break; case "favcat": if (item.Value != "all") { var index = item.Value.QueryValueAsInt32(); index = Math.Max(0, index); index = Math.Min(9, index); category = Client.Current.Favorites[index]; } break; case "f_search": keyword = UnescapeKeyword(item.Value); break; } } if (!ap) { return(AsyncWrapper.CreateCompleted <LaunchResult>(new SearchLaunchResult(Client.Current.Favorites.Search("", category)))); } else { return(AsyncWrapper.CreateCompleted <LaunchResult>(new SearchLaunchResult(Client.Current.Favorites.Search(keyword, category)))); } }
public static bool CanHandle(Uri uri) { if (uri == null) { return(false); } if (uri.Host != UriProvider.Eh.RootUri.Host && uri.Host != UriProvider.Ex.RootUri.Host) { return(false); } var data = new UriHandlerData(uri); foreach (var item in handlers) { if (item.CanHandle(data)) { previousData = data; previousHandler = item; return(true); } } return(false); }
private FileSearchResult handleFileSearch(UriHandlerData data) { var fn = default(string); var sm = false; var cv = false; var exp = false; var hashes = default(IEnumerable <SHA1Value>); foreach (var item in data.Queries) { switch (item.Key) { case "f_shash": hashes = item.Value.Split(",;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(SHA1Value.Parse); break; case "fs_from": fn = item.Value; break; case "fs_similar": sm = item.Value.QueryValueAsBoolean(); break; case "fs_covers": cv = item.Value.QueryValueAsBoolean(); break; case "fs_exp": exp = item.Value.QueryValueAsBoolean(); break; } } var otherdata = handleSearch(data); return(FileSearchResult.Search(otherdata.Keyword, otherdata.Category, hashes, fn, sm, cv, exp)); }
public static Task <LaunchResult> HandleAsync(Uri uri) { if (uri is null) { throw new ArgumentNullException(nameof(uri)); } _RewriteUri(ref uri); var data = _PreviousData; var h = _PreviousHandler; if (data?.Uri == uri && h != null && h.CanHandle(data)) { return(h.HandleAsync(data)); } data = new UriHandlerData(uri); foreach (var item in handlers) { if (item.CanHandle(data)) { return(item.HandleAsync(data)); } } throw new NotSupportedException("Unsupported uri."); }
protected static Category GetCategory(UriHandlerData data) { var category = Category.Unspecified; foreach (var item in data.Queries) { var b = item.Value.QueryValueAsBoolean(); switch (item.Key) { case "f_doujinshi": if (b) { category |= Category.Doujinshi; } break; case "f_manga": if (b) { category |= Category.Manga; } break; case "f_artistcg": if (b) { category |= Category.ArtistCG; } break; case "f_gamecg": if (b) { category |= Category.GameCG; } break; case "f_western": if (b) { category |= Category.Western; } break; case "f_non-h": if (b) { category |= Category.NonH; } break; case "f_imageset": if (b) { category |= Category.ImageSet; } break; case "f_cosplay": if (b) { category |= Category.Cosplay; } break; case "f_asianporn": if (b) { category |= Category.AsianPorn; } break; case "f_misc": if (b) { category |= Category.Misc; } break; } } return(category); }
protected static string GetKeyword(UriHandlerData data) { return(UnescapeKeyword(DictionaryExtention.GetValueOrDefault(data.Queries, "f_search", ""))); }
protected static string GetKeyword(UriHandlerData data) { return(UnescapeKeyword(data.Queries.GetString("f_search") ?? "")); }
protected static AdvancedSearchOptions GetAdvancedSearchOptions(UriHandlerData data) => AdvancedSearchOptions.ParseUri(data);
public override bool CanHandle(UriHandlerData data) { return(data.Paths.Count >= 1 && data.Path0 == "favorites.php"); }
public override bool CanHandle(UriHandlerData data) { return(data.Paths.Count == 0); }