using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Navigation; using sharpknife.Controls; #if WIN32 using MSHTML; #else using mshtml; #endif using sharpknife.Utils; using sharpknife.Engines; namespace sharpknife.Commands { class MyFreeSharesParseCommand : Command { private WebBrowserControl browser; public PTCSource Source { get; set; } public MyFreeSharesParseCommand() { this.Group = "Browser"; this.Timeout = 45; browser = WebBrowserControl.GetWebBrowserControl(); Source = PTCSource.GetSource("MyFreeShares"); } public override void Execute() { base.Execute(); browser.LoadCompleted += ParseAdsCommand_LoadCompleted; Debug = "Navigate"; browser.Navigate(Source.BaseUrl); } void ParseAdsCommand_LoadCompleted(object sender, NavigationEventArgs e) { IHTMLDocument2 dom = browser.Document; string body = browser.Html; // Login page if (e.Uri.AbsoluteUri == Source.LogInUrl && body.IndexOf("Members Area", StringComparison.InvariantCultureIgnoreCase) >= 0) { IHTMLElementCollection inputFields = HtmlUtils.GetElementCollection(browser.Document, "input"); foreach (IHTMLInputElement element in inputFields) { if (element.name == "user") { element.value = Source.Username; } else if (element.name == "loza") { element.value = Source.Password; } else if (element.name == "Submit2") { element.form.submit(); return; } } } // Members area else if (e.Uri.AbsoluteUri == "http://www.myfreeshares.com/member.php") { IHTMLFormElement form = browser.GetForm("member5.php"); form.submit(); return; } else if (e.Uri.AbsoluteUri == "http://www.myfreeshares.com/member5.php") { IHTMLElementCollection links = HtmlUtils.GetElementCollection(browser.Document, "a"); foreach (IHTMLAnchorElement link in links) { if (link.href.IndexOf("http://www.myfreeshares.com/click.php", StringComparison.InvariantCultureIgnoreCase) >= 0) { CommandEngine.GetEngine().Commands.Add(new AdCommand(link.href, 15, AdCommand.BonusValue.Share, 0.01m, Source.Name)); } } browser.LoadCompleted -= ParseAdsCommand_LoadCompleted; //MyFreeSharesParseCommand command = new MyFreeSharesParseCommand() //{ // NextExecution = DateTime.Now.AddHours(2) //}; //CommandEngine.GetEngine().Commands.Add(command); Status = StatusCode.Completed; } } } }