private static void FroumCacheDemo() { var provider = DefaultLocalFileSystemHttpCacheProvider.Current; Regex urlRegex = new Regex(@"(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})"); var resolver = new RegexPathResolver(urlRegex, "thread_id_{1}.xml"); provider.Configure(@"D:\httpcache", resolver); var collection = new ThreadCollection(Community.MSDN, "wpdevelop"); var task = collection.NavigateToPageAsync(1); task.Wait(); var threads = task.Result; var client = new HttpClient(); foreach (var thread in threads) { var urlString = thread + "&outputAs=xml"; var uri = new Uri(urlString); if (provider.IsCached(uri)) { continue; } var httpTask = client.GetStreamAsync(uri); httpTask.Wait(); provider.Cache(httpTask.Result, uri); } }
public async Task TakeAsync(int pageSize) { var collection = new ThreadCollection(_community, _forum); for (int i = 1; i < pageSize + 1; i++) { var threads = await collection.NavigateToPageAsync(i); foreach (var url in threads) { var threadId = ExtractUuid(url); if (_storage.FirstOrDefault(m => m.Id.Equals(threadId)) != null) { continue; } var parser = new ThreadParser(Guid.Parse(threadId)); try { var info = await parser.ReadThreadInfoAsync(); _storage.Add(info); Log(threadId); } catch (Exception ex) { Log(ex.Message); } } } }
static async Task Run(Community community, string forum, int index) { var collection = new ThreadCollection(community, forum); var threads = await collection.NavigateToPageAsync(index); var client = new HttpClient(); foreach (var thread in threads) { var body = new FormUrlEncodedContent(new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("", thread)}); var message = await client.PostAsync("http://analyzeit.azurewebsites.net/api/thread", body); var result = await message.Content.ReadAsStringAsync(); Console.WriteLine(result); } }