using System; using System.Collections.Generic; using System.Linq; using System.Text; #if WIN32 using MSHTML; #else using mshtml; #endif using sharpknife.Controls; using sharpknife.Data; namespace sharpknife.Strategies { public abstract class Strategy { public abstract bool CheckLogin(WebBrowserControl browser, PTCSource source); public abstract void Login(WebBrowserControl browser, PTCSource source); public abstract decimal GetBalance(WebBrowserControl browser, PTCSource source); public abstract decimal GetReferrals(WebBrowserControl browser, PTCSource source); public abstract bool SolveCaptcha(WebBrowserControl browser, PTCSource source); public abstract Ad ParseMail(Mail mail); public abstract bool ParseAds(WebBrowserControl browser, PTCSource source); public static Strategy GetStrategy(string source) { Strategy strategy = null; // TODO: dynamically create strategy class based on name or table field. switch (source) { case "Clicksia": strategy = new ClicksiaStrategy(); break; case "ClixSense": strategy = new ClixSenseStrategy(); break; case "DonkeyMails": strategy = new DonkeyMailsStrategy(); break; case "EuroPinata": strategy = new EuroPinataStrategy(); break; case "GetPaidMail": strategy = new GetPaidMailStrategy(); break; case "Incentria": strategy = new IncentriaStrategy(); break; case "JillsClickCorner": strategy = new JillsClickCornerStrategy(); break; case "MyFreeShares": strategy = new MyFreeSharesStrategy(); break; case "NeoBux": strategy = new NeoBuxStrategy(); break; case "No-Minimum": strategy = new NoMinimumStrategy(); break; case "ProBux": strategy = new ProBuxStrategy(); break; case "SamBux": strategy = new SamBuxStrategy(); break; case "VoBux": strategy = new VoBuxStrategy(); break; case "WordLinx": strategy = new WordLinxStrategy(); break; case "YouRoMail": strategy = new YouRoMailStrategy(); break; default: throw new Exception("Undefined strategy"); } return strategy; } } }