Example #1
0
        public override IAsyncOperation <LaunchResult> HandleAsync(UriHandlerData data)
        {
            var sr = data.Queries.ContainsKey("f_shash")
                 ? handleFileSearch(data)
                 : handleSearch(data);

            return(AsyncWrapper.CreateCompleted <LaunchResult>(new SearchLaunchResult(sr)));
        }
        public override IAsyncOperation <LaunchResult> HandleAsync(UriHandlerData data)
        {
            var category = categoryDic[data.Path0];
            var keyword  = GetKeyword(data);
            var advanced = GetAdvancedSearchOptions(data);

            return(AsyncWrapper.CreateCompleted <LaunchResult>(new SearchLaunchResult(Client.Current.Search(keyword, category, advanced))));
        }
        public IAsyncAction AddToCategoryAsync(IReadOnlyList <ItemIndexRange> items, FavoriteCategory categoty)
        {
            if (categoty == null)
            {
                throw new ArgumentNullException(nameof(categoty));
            }
            if (items == null || items.Count == 0)
            {
                return(AsyncWrapper.CreateCompleted());
            }
            return(AsyncInfo.Run(async token =>
            {
                var ddact = default(string);
                if (categoty.Index < 0)
                {
                    ddact = "delete";
                }
                else
                {
                    ddact = $"fav{categoty.Index}";
                }
                var post = Client.Current.HttpClient.PostAsync(this.SearchUri, new HttpFormUrlEncodedContent(getParameters()));
                token.Register(post.Cancel);
                var r = await post;
                if (categoty.Index < 0)
                {
                    this.Reset();
                }
                else
                {
                    foreach (var range in items)
                    {
                        for (var i = range.FirstIndex; i <= range.LastIndex; i++)
                        {
                            this[i].FavoriteCategory = categoty;
                        }
                    }
                }
                IEnumerable <KeyValuePair <string, string> > getParameters()
                {
                    yield return new KeyValuePair <string, string>("apply", "Apply");

                    yield return new KeyValuePair <string, string>("ddact", ddact);

                    foreach (var range in items)
                    {
                        for (var i = range.FirstIndex; i <= range.LastIndex; i++)
                        {
                            yield return new KeyValuePair <string, string>("modifygids[]", this[i].ID.ToString());
                        }
                    }
                }
            }));
        }
Example #4
0
        public override IAsyncOperation <LaunchResult> HandleAsync(UriHandlerData data)
        {
            var v        = data.Paths[1].Unescape2().Trim();
            var category = GetCategory(data);
            var advanced = GetAdvancedSearchOptions(data);

            switch (data.Path0)
            {
            case "tag":
                return(AsyncWrapper.CreateCompleted <LaunchResult>(new SearchLaunchResult(Tag.Parse(v.TrimEnd(trim)).Search(category, advanced))));

            case "uploader":
                return(AsyncWrapper.CreateCompleted <LaunchResult>(new SearchLaunchResult(Client.Current.Search(v, null, category, advanced))));
            }
            return(AsyncWrapper.CreateError <LaunchResult>(new NotSupportedException("Unsupported uri.")));
        }
Example #5
0
 public static IAsyncOperation <Record> GetAsync(string title)
 {
     using (var db = new WikiDb())
     {
         var record = db.Table.AsNoTracking().SingleOrDefault(r => r.Title == title);
         if (record != null && record.IsValid)
         {
             return(AsyncWrapper.CreateCompleted(record));
         }
         if (record == null || record.LastUpdate.AddDays(7) < DateTimeOffset.Now)
         {
             return(FetchAsync(title));
         }
         return(AsyncWrapper.CreateCompleted(default(Record)));
     }
 }
Example #6
0
        public static IAsyncOperation <string> GetDisplayContentAsync(this Tag tag)
        {
            var settings = SettingCollection.Current;

            if (settings.UseChineseTagTranslation)
            {
                var r = tag.GetEhTagTranslatorRecord();
                if (r != null)
                {
                    return(AsyncWrapper.CreateCompleted(r.Translated.Text));
                }
            }
            if (settings.UseJapaneseTagTranslation)
            {
                var t = tag.GetEhWikiRecordAsync();
                if (t.Status == AsyncStatus.Completed)
                {
                    var r = t.GetResults();
                    if (!match(tag, r))
                    {
                        return(AsyncWrapper.CreateCompleted(tag.Content));
                    }
                    return(AsyncWrapper.CreateCompleted(r.Japanese ?? tag.Content));
                }
                return(Run(async token =>
                {
                    try
                    {
                        var r = await t;
                        if (!match(tag, r))
                        {
                            return tag.Content;
                        }
                        return r.Japanese ?? tag.Content;
                    }
                    catch (Exception)
                    {
                        return tag.Content;
                    }
                }));
            }
            return(AsyncWrapper.CreateCompleted(tag.Content));
        }
Example #7
0
        protected internal static IAsyncOperation <StorageFolder> GetImageFolderAsync()
        {
            var temp = ImageFolder;

            if (temp != null)
            {
                return(AsyncWrapper.CreateCompleted(temp));
            }
            return(Run(async token =>
            {
                var temp2 = ImageFolder;
                if (temp2 == null)
                {
                    temp2 = await ApplicationData.Current.LocalCacheFolder.CreateFolderAsync("Images", CreationCollisionOption.OpenIfExists);
                    ImageFolder = temp2;
                }
                return temp2;
            }));
        }
Example #8
0
 public static IAsyncOperation <IList <Gallery> > FetchGalleriesAsync(IReadOnlyList <GalleryInfo> galleryInfo)
 {
     if (galleryInfo == null)
     {
         throw new ArgumentNullException(nameof(galleryInfo));
     }
     if (galleryInfo.Count <= 0)
     {
         return(AsyncWrapper.CreateCompleted((IList <Gallery>)Array.Empty <Gallery>()));
     }
     if (galleryInfo.Count <= 25)
     {
         return(Run <IList <Gallery> >(async token =>
         {
             var re = await new GalleryDataRequest(galleryInfo, 0, galleryInfo.Count).GetResponseAsync();
             var data = re.GalleryMetaData;
             data.ForEach(async g => await g.InitAsync());
             return data;
         }));
     }
     else
     {
         return(Run <IList <Gallery> >(async token =>
         {
             var result = new Gallery[galleryInfo.Count];
             var pageCount = MathHelper.GetPageCount(galleryInfo.Count, 25);
             for (var i = 0; i < pageCount; i++)
             {
                 var pageSize = MathHelper.GetSizeOfPage(galleryInfo.Count, 25, i);
                 var startIndex = MathHelper.GetStartIndexOfPage(25, i);
                 var re = await new GalleryDataRequest(galleryInfo, startIndex, pageSize).GetResponseAsync();
                 var data = re.GalleryMetaData;
                 data.ForEach(async g => await g.InitAsync());
                 data.CopyTo(result, startIndex);
             }
             return result;
         }));
     }
 }
        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))));
            }
        }
Example #10
0
 protected override IAsyncAction InitOverrideAsync()
 {
     return(AsyncWrapper.CreateCompleted());
 }
Example #11
0
 public override IAsyncOperation <LaunchResult> HandleAsync(UriHandlerData data)
 {
     GalleryInfo.TryParseGallery(data, out var info);
     return(AsyncWrapper.CreateCompleted((LaunchResult) new GalleryLaunchResult(info, -1, GalleryLaunchStatus.Default)));
 }