public async Task <ResponseDetails> ReadRequestToEnd2Async(HttpWebRequest request) { using (var response = await request.GetResponseAsync().TimeoutAfter(shellService.Settings.TimeOut) as HttpWebResponse) { if (response.StatusCode == HttpStatusCode.Found || response.StatusCode == HttpStatusCode.Moved) { response.Close(); if (response.Headers.AllKeys.Contains("Set-Cookie")) { cookieService.SetUriCookie(CookieParser.GetAllCookiesFromHeader(response.Headers["Set-Cookie"], "www.tumblr.com")); } return(new ResponseDetails() { HttpStatusCode = response.StatusCode, RedirectUrl = response.Headers["Location"] }); } using (Stream stream = GetStreamForApiRequest(response.GetResponseStream())) { using (var buffer = new BufferedStream(stream)) { using (var reader = new StreamReader(buffer)) { string content = reader.ReadToEnd(); return(new ResponseDetails() { HttpStatusCode = response.StatusCode, Response = content }); } } } } }
private async Task PerformPrivacyConsentRequestAsync() { if (CheckIfLoggedInAsync()) { return; } await UpdateTumblrKey(); var referer = @"https://www.tumblr.com/privacy/consent?redirect="; var headers = new Dictionary <string, string> { { "X-tumblr-form-key", tumblrKey } }; HttpWebRequest request = webRequestFactory.CreatePostXhrReqeust("https://www.tumblr.com/svc/privacy/consent", referer, headers); var requestBody = "{\"eu_resident\":true,\"gdpr_is_acceptable_age\":true,\"gdpr_consent_core\":true,\"gdpr_consent_first_party_ads\":true,\"gdpr_consent_third_party_ads\":true,\"gdpr_consent_search_history\":true,\"redirect_to\":\"\"}"; request.ContentType = "application/json"; await webRequestFactory.PerformPostXHRReqeustAsync(request, requestBody); using (var response = await request.GetResponseAsync() as HttpWebResponse) { cookieService.SetUriCookie(response.Cookies); } }
public async Task ConfirmPrivacyConsent() { //if (CheckIfLoggedIn()) // return; await UpdateTumblrKey(); string referer = @"https://www.tumblr.com/privacy/consent?redirect="; var headers = new Dictionary <string, string> { { "X-tumblr-form-key", tumblrKey } }; HttpWebRequest request = webRequestFactory.CreatePostXhrReqeust("https://www.tumblr.com/svc/privacy/consent", referer, headers); request.ContentType = "application/json"; string requestBody = "{\"eu_resident\":true,\"gdpr_is_acceptable_age\":true,\"gdpr_consent_core\":true,\"gdpr_consent_first_party_ads\":true,\"gdpr_consent_third_party_ads\":true,\"gdpr_consent_search_history\":true,\"redirect_to\":\"\"}"; 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) { cookieService.SetUriCookie(response.Cookies); } }
public void Initialize() { string savePath = _environmentService.AppSettingsPath; string logPath = Path.GetFullPath(Path.Combine(savePath, "..")); if (CheckIfPortableMode(AppSettingsFileName)) { savePath = AppDomain.CurrentDomain.BaseDirectory; logPath = savePath; } Logger.Initialize(logPath, TraceLevel.Verbose); _appSettings = LoadSettings <AppSettings>(Path.Combine(savePath, AppSettingsFileName)); InitializeCultures(_appSettings); if (AppSettings.Upgrade(_appSettings)) { SaveSettings(Path.Combine(GetAppDataPath(), AppSettingsFileName), _appSettings); } Logger.ChangeLogLevel((TraceLevel)Enum.Parse(typeof(TraceLevel), _appSettings.LogLevel)); Logger.Information(ApplicationInfo.ProductName + " start"); Logger.Information("AppPath: {0}", ApplicationInfo.ApplicationPath); Logger.Information("AppSettingsPath: {0}", _environmentService.AppSettingsPath); Logger.Information("LogFilename: {0}", Path.Combine(logPath, "TumblThree.log")); Logger.Information("Version: {0}", ApplicationInfo.Version); Logger.Information("IsLongPathSupported: {0}", ShellService.IsLongPathSupported); _queueSettings = LoadSettings <QueueSettings>(Path.Combine(savePath, QueueSettingsFileName)); _managerSettings = LoadSettings <ManagerSettings>(Path.Combine(savePath, ManagerSettingsFileName)); _cookieList = LoadSettings <List <Cookie> >(Path.Combine(savePath, CookiesFileName)); ShellService.Settings = _appSettings; ShellService.ShowErrorAction = ShellViewModel.ShowError; ShellService.ShowDetailsViewAction = ShowDetailsView; ShellService.ShowQueueViewAction = ShowQueueView; ShellService.UpdateDetailsViewAction = UpdateDetailsView; ShellService.SettingsUpdatedHandler += OnSettingsUpdated; ShellService.InitializeOAuthManager(); ManagerController.QueueManager = _queueManager; ManagerController.ManagerSettings = _managerSettings; ManagerController.BlogManagerFinishedLoadingLibrary += OnBlogManagerFinishedLoadingLibrary; ManagerController.FinishedCrawlingLastBlog += OnFinishedCrawlingLastBlog; QueueController.QueueSettings = _queueSettings; QueueController.QueueManager = _queueManager; DetailsController.QueueManager = _queueManager; CrawlerController.QueueManager = _queueManager; Task managerControllerInit = ManagerController.InitializeAsync(); QueueController.Initialize(); DetailsController.Initialize(); CrawlerController.Initialize(); _cookieService.SetUriCookie(_cookieList); }
public async Task <string> ReadRequestToEndAsync(HttpWebRequest request, bool storeCookies = false) { using (var response = await request.GetResponseAsync().TimeoutAfter(shellService.Settings.TimeOut) as HttpWebResponse) { if (storeCookies) { cookieService.SetUriCookie(response.Cookies); } using (Stream stream = GetStreamForApiRequest(response.GetResponseStream())) { using (var buffer = new BufferedStream(stream)) { using (var reader = new StreamReader(buffer)) { return(reader.ReadToEnd()); } } } } }
private async Task <string> RequestTumblrKey() { string url = "https://www.tumblr.com/login"; HttpWebRequest request = webRequestFactory.CreateGetReqeust(url); cookieService.GetUriCookie(request.CookieContainer, new Uri("https://www.tumblr.com/")); using (var response = await request.GetResponseAsync() as HttpWebResponse) { 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()); } } } } }
public void Initialize() { string savePath = _environmentService.AppSettingsPath; string logPath = Path.GetFullPath(Path.Combine(savePath, "..")); if (CheckIfPortableMode(AppSettingsFileName)) { savePath = AppDomain.CurrentDomain.BaseDirectory; logPath = savePath; } _appSettings = LoadSettings <AppSettings>(Path.Combine(savePath, AppSettingsFileName)); if (AppSettings.Upgrade(_appSettings)) { SaveSettings(Path.Combine(GetAppDataPath(), AppSettingsFileName), _appSettings); } Logger.Initialize(logPath, (System.Diagnostics.TraceLevel)Enum.Parse(typeof(System.Diagnostics.TraceLevel), _appSettings.LogLevel)); Logger.Information("IsLongPathSupported: {0}", ShellService.IsLongPathSupported); _queueSettings = LoadSettings <QueueSettings>(Path.Combine(savePath, QueueSettingsFileName)); _managerSettings = LoadSettings <ManagerSettings>(Path.Combine(savePath, ManagerSettingsFileName)); _cookieList = LoadSettings <List <Cookie> >(Path.Combine(savePath, CookiesFileName)); ShellService.Settings = _appSettings; ShellService.ShowErrorAction = ShellViewModel.ShowError; ShellService.ShowDetailsViewAction = ShowDetailsView; ShellService.ShowQueueViewAction = ShowQueueView; ShellService.UpdateDetailsViewAction = UpdateDetailsView; ShellService.SettingsUpdatedHandler += OnSettingsUpdated; ShellService.InitializeOAuthManager(); ManagerController.QueueManager = _queueManager; ManagerController.ManagerSettings = _managerSettings; ManagerController.BlogManagerFinishedLoadingLibrary += OnBlogManagerFinishedLoadingLibrary; QueueController.QueueSettings = _queueSettings; QueueController.QueueManager = _queueManager; DetailsController.QueueManager = _queueManager; CrawlerController.QueueManager = _queueManager; Task managerControllerInit = ManagerController.InitializeAsync(); QueueController.Initialize(); DetailsController.Initialize(); CrawlerController.Initialize(); _cookieService.SetUriCookie(_cookieList); }
public void PerformTumblrLogout() { HttpWebRequest request = webRequestFactory.CreateGetReqeust("https://www.tumblr.com/"); cookieService.GetUriCookie(request.CookieContainer, new Uri("https://www.tumblr.com/")); cookieService.RemoveUriCookie(new Uri("https://www.tumblr.com")); var tosCookie = request.CookieContainer.GetCookies(new Uri("https://www.tumblr.com/"))["pfg"]; var tosCookieCollection = new CookieCollection(); tosCookieCollection.Add(tosCookie); cookieService.SetUriCookie(tosCookieCollection); }
public void Initialize() { if (CheckIfPortableMode(appSettingsFileName)) { appSettings = LoadSettings <AppSettings>(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, appSettingsFileName)); queueSettings = LoadSettings <QueueSettings>(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, queueSettingsFileName)); managerSettings = LoadSettings <ManagerSettings>(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, managerSettingsFileName)); cookieList = LoadSettings <List <Cookie> >(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, cookiesFileName)); } else { appSettings = LoadSettings <AppSettings>(Path.Combine(environmentService.AppSettingsPath, appSettingsFileName)); queueSettings = LoadSettings <QueueSettings>(Path.Combine(environmentService.AppSettingsPath, queueSettingsFileName)); managerSettings = LoadSettings <ManagerSettings>(Path.Combine(environmentService.AppSettingsPath, managerSettingsFileName)); cookieList = LoadSettings <List <Cookie> >(Path.Combine(environmentService.AppSettingsPath, cookiesFileName)); } ShellService.Settings = appSettings; ShellService.ShowErrorAction = ShellViewModel.ShowError; ShellService.ShowDetailsViewAction = ShowDetailsView; ShellService.ShowQueueViewAction = ShowQueueView; ShellService.UpdateDetailsViewAction = UpdateDetailsView; ShellService.InitializeOAuthManager(); ManagerController.QueueManager = queueManager; ManagerController.ManagerSettings = managerSettings; ManagerController.BlogManagerFinishedLoadingLibrary += OnBlogManagerFinishedLoadingLibrary; Task managerControllerInit = ManagerController.Initialize(); QueueController.QueueSettings = queueSettings; QueueController.QueueManager = queueManager; QueueController.Initialize(); DetailsController.QueueManager = queueManager; DetailsController.Initialize(); CrawlerController.QueueManager = queueManager; CrawlerController.Initialize(); cookieService.SetUriCookie(cookieList); }
public void PerformTumblrLogout() { var request = webRequestFactory.CreateGetReqeust("https://www.tumblr.com/"); cookieService.GetUriCookie(request.CookieContainer, new Uri("https://www.tumblr.com/")); cookieService.RemoveUriCookie(new Uri("https://www.tumblr.com")); var tosCookie = request.CookieContainer.GetCookies( new Uri("https://www.tumblr.com/"))["pfg"]; // pfg cookie contains ToS/GDPR agreement var tosCookieCollection = new CookieCollection { tosCookie }; cookieService.SetUriCookie(tosCookieCollection); }
public void Initialize() { string savePath = _environmentService.AppSettingsPath; if (CheckIfPortableMode(AppSettingsFileName)) { savePath = AppDomain.CurrentDomain.BaseDirectory; } _appSettings = LoadSettings <AppSettings>(Path.Combine(savePath, AppSettingsFileName)); _queueSettings = LoadSettings <QueueSettings>(Path.Combine(savePath, QueueSettingsFileName)); _managerSettings = LoadSettings <ManagerSettings>(Path.Combine(savePath, ManagerSettingsFileName)); _cookieList = LoadSettings <List <Cookie> >(Path.Combine(savePath, CookiesFileName)); ShellService.Settings = _appSettings; ShellService.ShowErrorAction = ShellViewModel.ShowError; ShellService.ShowDetailsViewAction = ShowDetailsView; ShellService.ShowQueueViewAction = ShowQueueView; ShellService.UpdateDetailsViewAction = UpdateDetailsView; ShellService.SettingsUpdatedHandler += OnSettingsUpdated; ShellService.InitializeOAuthManager(); ManagerController.QueueManager = _queueManager; ManagerController.ManagerSettings = _managerSettings; ManagerController.BlogManagerFinishedLoadingLibrary += OnBlogManagerFinishedLoadingLibrary; QueueController.QueueSettings = _queueSettings; QueueController.QueueManager = _queueManager; DetailsController.QueueManager = _queueManager; CrawlerController.QueueManager = _queueManager; Task managerControllerInit = ManagerController.InitializeAsync(); QueueController.Initialize(); DetailsController.Initialize(); CrawlerController.Initialize(); _cookieService.SetUriCookie(_cookieList); }
public void AddCookies(CookieCollection cookies) { cookieService.SetUriCookie(cookies); }