private async Task <string> RequestApiDataAsync(string url, string bearerToken, string referer = "", Dictionary <string, string> headers = null, IEnumerable <string> cookieHosts = null) { var requestRegistration = new CancellationTokenRegistration(); try { HttpWebRequest request = WebRequestFactory.CreateGetXhrRequest(url, referer, headers); cookieHosts = cookieHosts ?? new List <string>(); foreach (string cookieHost in cookieHosts) { CookieService.GetUriCookie(request.CookieContainer, new Uri(cookieHost)); } request.PreAuthenticate = true; request.Headers.Add("Authorization", "Bearer " + bearerToken); request.Accept = "application/json"; requestRegistration = Ct.Register(() => request.Abort()); return(await WebRequestFactory.ReadRequestToEndAsync(request, true)); } finally { requestRegistration.Dispose(); } }
protected virtual async Task <string> RequestDataAsync(string limit, string offset) { var requestRegistration = new CancellationTokenRegistration(); try { string url = @"https://www.tumblr.com/svc/indash_blog?tumblelog_name_or_id=" + Blog.Name + @"&post_id=&limit=" + limit + "&offset=" + offset + "&should_bypass_safemode=true"; string referer = @"https://www.tumblr.com/dashboard/blog/" + Blog.Name; var headers = new Dictionary <string, string> { { "X-tumblr-form-key", tumblrKey } }; HttpWebRequest request = WebRequestFactory.CreateGetXhrRequest(url, referer, headers); CookieService.GetUriCookie(request.CookieContainer, new Uri("https://www.tumblr.com/")); CookieService.GetUriCookie(request.CookieContainer, new Uri("https://" + Blog.Name.Replace("+", "-") + ".tumblr.com")); requestRegistration = Ct.Register(() => request.Abort()); return(await WebRequestFactory.ReadRequestToEndAsync(request)); } finally { requestRegistration.Dispose(); } }