private async Task HandleManualDownload(WebBrowserVM vm, CancellationTokenSource cancel, ManuallyDownloadFile manuallyDownloadFile) { var browser = new CefSharpWrapper(vm.Browser); vm.Instructions = $"Please locate and download {manuallyDownloadFile.State.Url}"; var result = new TaskCompletionSource <Uri>(); browser.DownloadHandler = uri => { //var client = Helpers.GetClient(browser.GetCookies("").Result, browser.Location); result.SetResult(uri); }; await vm.Driver.WaitForInitialized(); await browser.NavigateTo(new Uri(manuallyDownloadFile.State.Url)); while (!cancel.IsCancellationRequested) { if (result.Task.IsCompleted) { var cookies = await Helpers.GetCookies(); var referer = browser.Location; var client = Helpers.GetClient(cookies, referer); manuallyDownloadFile.Resume(result.Task.Result, client); break; } await Task.Delay(100); } }
public ReroutingDownloadHandler(CefSharpWrapper wrapper, AbsolutePath path, bool quickMode, CancellationToken?token) { _wrapper = wrapper; _path = path; _quickMode = quickMode; _cancelationToken = token; token?.Register(() => _tcs.TrySetCanceled()); }
private async Task HandleManualNexusDownload(WebBrowserVM vm, CancellationTokenSource cancel, ManuallyDownloadNexusFile manuallyDownloadNexusFile) { var state = manuallyDownloadNexusFile.State; var game = state.Game.MetaData(); var hrefs = new[] { $"/Core/Libs/Common/Widgets/DownloadPopUp?id={state.FileID}&game_id={game.NexusGameId}", $"https://www.nexusmods.com/{game.NexusName}/mods/{state.ModID}?tab=files&file_id={state.FileID}", $"/Core/Libs/Common/Widgets/ModRequirementsPopUp?id={state.FileID}&game_id={game.NexusGameId}" }; await vm.Driver.WaitForInitialized(); IWebDriver browser = new CefSharpWrapper(vm.Browser); vm.Instructions = $"Please Download {state.Name} - {state.ModID} - {state.FileID}"; browser.DownloadHandler = uri => { manuallyDownloadNexusFile.Resume(uri); browser.DownloadHandler = null; }; await browser.NavigateTo(NexusApiClient.ManualDownloadUrl(manuallyDownloadNexusFile.State)); var buttin_href = $"/Core/Libs/Common/Widgets/DownloadPopUp?id={manuallyDownloadNexusFile.State.FileID}&game_id={Game.SkyrimSpecialEdition}"; while (!cancel.IsCancellationRequested && !manuallyDownloadNexusFile.Task.IsCompleted) { await browser.EvaluateJavaScript( @"Array.from(document.getElementsByClassName('accordion')).forEach(e => Array.from(e.children).forEach(c => c.style=''))"); foreach (var href in hrefs) { const string style = "border-thickness: thick; border-color: #ff0000;border-width: medium;border-style: dashed;background-color: teal;padding: 7px"; await browser.EvaluateJavaScript($"Array.from(document.querySelectorAll('.accordion a[href=\"{href}\"]')).forEach(e => {{e.scrollIntoView({{behavior: 'smooth', block: 'center', inline: 'nearest'}}); e.setAttribute('style', '{style}');}});"); } await Task.Delay(250); } }
/// <summary> /// Initializes a new instance of the MainViewModel class. /// </summary> public MainViewModel(IDataAccessService servPxy) { try { _serviceProxy = servPxy; Database.SetInitializer(new AvitoModelInitializer()); //ID приложения: 2355847 //Создание браузерной группы BrowserClientEx = new WebClientEx(); BrowserClientEx.Encoding = new UTF8Encoding(); BrowserClientEx.DefaultHeaders[HttpRequestHeader.UserAgent] = Settings.Default.WebClientAgent; BrowserClientEx.RequestTimeOut = Settings.Default.WebClientTimeOut * 1000; //Настройки CefSharp CefSharp.Wpf.CefSettings cfsettings = new CefSharp.Wpf.CefSettings { CachePath = Environment.CurrentDirectory + @"\browserCache", UserAgent = Settings.Default.WebClientAgent, }; Cef.Initialize(cfsettings); ChBrowser = new CefSharpWrapper(); _requestHandler = new RequestHandler(); ChBrowser.RequestHandler = _requestHandler; BrowserClientEx.CHW = ChBrowser; AvitoUsers = servPxy.GetUsers; CurrentDetachedUser = (AvitoUsers.LastOrDefault() != null) ? _serviceProxy.GetDetachedEntity(AvitoUsers.LastOrDefault()) : new AvitoUser(); } catch (Exception exception) { Console.WriteLine(exception); MessageBox.Show(exception.Message, "Ошибка инициализации приложения", MessageBoxButton.OK, MessageBoxImage.Error); } // WINDOW COMMANDS WindowClosing = new RelayCommand <CancelEventArgs>((s) => { Cef.Shutdown(); }); AuthenticateCommand = new RelayCommand(DoAvitoLogin); CallUserListCommand = new RelayCommand(OpenUserListWindow); CallProfileNavigateCommand = new RelayCommand(() => { ChBrowser.Address = "https://www.avito.ru/profile"; }); CallProfileRegisterCommand = new RelayCommand(AddNewProfile); CallAvitoTechnicalCommand = new RelayCommand(() => { ChBrowser.Address = "https://www.avito.ru/info/show_technical"; }); CallHidePanelCommand = new RelayCommand(HideLeftPanel); CallViewPhotosCommand = new RelayCommand(() => { Process.Start(Environment.CurrentDirectory + @"\images"); }); CallLicenseInfoCommand = new RelayCommand(OpenLicenseInfo); CallDebugInfoCommand = new RelayCommand(OpenDebugWindow); CallReloadBrowserCommand = new RelayCommand(() => CefSharp.WebBrowserExtensions.Reload(ChBrowser, true)); //TODO: вынести в отдельную viewmodel LogInAsUserCommand = new RelayCommand <AvitoUser>(LogInAsUser); RefreshUserInformationCommand = new RelayCommand <AvitoUser>(RefreshUserInformation); DropCredentialsCommand = new RelayCommand <AvitoUser>(DropCredentials); DeleteUserCommand = new RelayCommand <AvitoUser>(DeleteUser); SetDefaultPhoneCommand = new RelayCommand <AvitoUser>(SetDefaultPhone); }
public DownloadHandler(CefSharpWrapper wrapper) { _wrapper = wrapper; }
public PopupBlocker(CefSharpWrapper cefSharpWrapper) { _wrapper = cefSharpWrapper; }