private async Task <string> Authenticate(string login, string password) { string url = "https://www.tumblr.com/login"; string referer = "https://www.tumblr.com/login"; var headers = new Dictionary <string, string>(); HttpWebRequest request = webRequestFactory.CreatePostReqeust(url, referer, headers); request.AllowAutoRedirect = true; cookieService.GetUriCookie(request.CookieContainer, new Uri("https://www.tumblr.com/")); var parameters = new Dictionary <string, string> { { "determine_email", login }, { "user[email]", login }, { "user[password]", password }, { "tumblelog[name]", "" }, { "user[age]", "" }, { "context", "no_referer" }, { "version", "STANDARD" }, { "follow", "" }, { "form_key", tumblrKey }, { "seen_suggestion", "0" }, { "used_suggestion", "0" }, { "used_auto_suggestion", "0" }, { "about_tumblr_slide", "" }, { "random_username_suggestions", "[\"KawaiiBouquetStranger\",\"KeenTravelerFury\",\"RainyMakerTastemaker\",\"SuperbEnthusiastCollective\",\"TeenageYouthFestival\"]" }, { "action", "signup_determine" } }; string requestBody = webRequestFactory.UrlEncode(parameters); using (Stream postStream = await request.GetRequestStreamAsync()) { byte[] postBytes = Encoding.ASCII.GetBytes(requestBody); await postStream.WriteAsync(postBytes, 0, postBytes.Length); await postStream.FlushAsync(); } using (var response = await request.GetResponseAsync() as HttpWebResponse) { if (request.Address == new Uri("https://www.tumblr.com/login")) { tfaNeeded = true; cookieService.SetUriCookie(response.Cookies); using (var stream = webRequestFactory.GetStreamForApiRequest(response.GetResponseStream())) { using (var buffer = new BufferedStream(stream)) { using (var reader = new StreamReader(buffer)) { return(reader.ReadToEnd()); } } } } cookieService.SetUriCookie(request.CookieContainer.GetCookies(new Uri("https://www.tumblr.com/"))); return(string.Empty); } }
private async Task <string> Authenticate(string login, string password) { const string url = "https://www.tumblr.com/login"; const string referer = "https://www.tumblr.com/login"; var headers = new Dictionary <string, string>(); var request = webRequestFactory.CreatePostReqeust(url, referer, headers); cookieService.GetUriCookie(request.CookieContainer, new Uri("https://www.tumblr.com/")); var parameters = new Dictionary <string, string> { { "determine_email", login }, { "user[email]", login }, { "user[password]", password }, { "tumblelog[name]", string.Empty }, { "user[age]", string.Empty }, { "context", "no_referer" }, { "version", "STANDARD" }, { "follow", string.Empty }, { "form_key", tumblrKey }, { "seen_suggestion", "0" }, { "used_suggestion", "0" }, { "used_auto_suggestion", "0" }, { "about_tumblr_slide", string.Empty }, { "random_username_suggestions", "[\"KawaiiBouquetStranger\",\"KeenTravelerFury\",\"RainyMakerTastemaker\",\"SuperbEnthusiastCollective\",\"TeenageYouthFestival\"]" }, { "action", "signup_determine" } }; await webRequestFactory.PerformPostReqeustAsync(request, parameters).ConfigureAwait(false); using (var response = await request.GetResponseAsync().TimeoutAfter(shellService.Settings.TimeOut).ConfigureAwait(false) as HttpWebResponse) { if (request.Address == new Uri("https://www.tumblr.com/login")) // TFA required { tfaNeeded = true; cookieService.SetUriCookie(response.Cookies); using (var stream = webRequestFactory.GetStreamForApiRequest(response.GetResponseStream())) { using (var buffer = new BufferedStream(stream)) { using (var reader = new StreamReader(buffer)) { return(reader.ReadToEnd()); } } } } cookieService.SetUriCookie(request.CookieContainer.GetCookies(new Uri("https://www.tumblr.com/"))); return(string.Empty); } }