Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }