Example #1
0
        public async Task DoWorkAsync()
        {
            using (HttpClient hc = new HttpClient())
            {
                Uri    uri = new Uri("https://raw.githubusercontent.com/H-Viewer-Sites/Index/master/sites/wnacg.txt");
                string s1  = await hc.GetStringAsync(uri);

                if (!string.IsNullOrEmpty(s1))
                {
                    site = JsonConvert.DeserializeObject <Site>(s1);

                    if (site != null)
                    {
                        int page = 0;
                        ParseUrl(site.indexUrl);
                        currUrl = site.indexUrl;
                        string url;
                        if (CurrentPage == StartPage)
                        {
                            url = currUrl.Replace("{pageStr:(.*?{.*?}.*?)}", "")
                                  .Replace("{page:" + StartPage + "}", "" + page)
                                  .Replace("{keyword:}", keyword);
                        }
                        else
                        {
                            url = currUrl.Replace("{page:" + StartPage + "}", "" + page).Replace("{keyword:}", keyword);
                            if (matchResult.ContainsKey("pageStr"))
                            {
                                url.Replace("{pageStr:(.*?{.*?}.*?)}", (page == StartPage) ? "" : "" + matchResult["pageStr"]);
                            }
                        }


                        string s = null;
                        try
                        {
                            //s = await hc.GetStringAsync(uri);
                            HttpRequestMessage httpRequest = new HttpRequestMessage(HttpMethod.Get, new Uri(url));
                            httpRequest.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36");
                            HttpResponseMessage responseAsync = await hc.SendRequestAsync(httpRequest);

                            responseAsync.EnsureSuccessStatusCode();

                            IBuffer asyncBuffer = await responseAsync.Content.ReadAsBufferAsync();

                            byte[] resultByteArray = asyncBuffer.ToArray();

                            EncodingProvider provider = CodePagesEncodingProvider.Instance;
                            Encoding.RegisterProvider(provider);

                            s = Encoding.GetEncoding("UTF-8").GetString(resultByteArray, 0, resultByteArray.Length);
                        }
                        catch (Exception e)
                        {
                            new MessageDialog(e.StackTrace, e.Message).ShowAsync();
                        }
                        if (!string.IsNullOrEmpty(s))
                        {
                            List <Collection> list = new List <Collection>();
                            RuleParser.GetCollections(list, s, site.indexRule, url, false);

                            gridView.ItemsSource = list;
                        }
                    }
                    else
                    {
                        throw new Exception("Error");
                    }
                }
                else
                {
                    throw new Exception("Error");
                }
            }
        }