Exemple #1
0
        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));
        }
Exemple #3
0
        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))));
            }
        }
Exemple #4
0
        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)));
        }
Exemple #5
0
        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))));
        }
Exemple #7
0
        public override SearchLaunchResult Handle(UriHandlerData data)
        {
            var sr = data.Queries.GetString("f_shash").IsNullOrEmpty()
                 ? handleSearch(data)
                 : (CategorySearchResult)handleFileSearch(data);

            return(new SearchLaunchResult(sr));
        }
Exemple #8
0
        private CategorySearchResult handleSearch(UriHandlerData data)
        {
            var keyword  = GetKeyword(data);
            var category = GetCategory(data);
            var advanced = GetAdvancedSearchOptions(data);

            return(Client.Current.Search(keyword, category, advanced));
        }
Exemple #9
0
        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)));
        }
Exemple #10
0
        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);
        }
Exemple #13
0
        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));
        }
Exemple #14
0
        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));
        }
Exemple #15
0
        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)));
        }
Exemple #17
0
        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}`.");
        }
Exemple #18
0
        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.")));
        }
Exemple #19
0
        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);
            }
        }
Exemple #20
0
        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))));
            }
        }
Exemple #22
0
        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);
        }
Exemple #23
0
        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));
        }
Exemple #24
0
        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", "")));
 }
Exemple #27
0
 protected static string GetKeyword(UriHandlerData data)
 {
     return(UnescapeKeyword(data.Queries.GetString("f_search") ?? ""));
 }
Exemple #28
0
 protected static AdvancedSearchOptions GetAdvancedSearchOptions(UriHandlerData data)
 => AdvancedSearchOptions.ParseUri(data);
Exemple #29
0
 public override bool CanHandle(UriHandlerData data)
 {
     return(data.Paths.Count >= 1 && data.Path0 == "favorites.php");
 }
Exemple #30
0
 public override bool CanHandle(UriHandlerData data)
 {
     return(data.Paths.Count == 0);
 }