public PhaseResult Run(Context context) { List<String> bind = null; if (!String.IsNullOrWhiteSpace(Binding)) { if (context.JsonResults.ContainsKey(Binding)) { bind = context.JsonResults[Binding]; } else { bind = new List<string>(); } } else { PhaseResult last = context.Stack.LastOrDefault(); if (last != null) { bind = last.ListResult; } } PhaseResult pr = new PhaseResult(this); pr.ListResult = new List<string>(); pr.Succeed = true; if (bind == null) { pr.Succeed = false; } else { // 将Json中PDF的Url下载并替换成文字 Int32 downloadSucc = 0; foreach (String json in bind) { Dictionary<String, String> dict = JsonConvert.DeserializeObject<Dictionary<String, String>>(json); Boolean succ = false; if (dict.ContainsKey(UrlTagName)) { String url = dict[UrlTagName]; succ = DownloadHelper.DownloadFile(url, Directory); if (!succ) { succ = DownloadHelper.DownloadFile(url, Directory); } } downloadSucc += succ ? 1 : 0; } pr.SetInt("download", downloadSucc); pr.SetInt("total", bind.Count); } return pr; }
public override PhaseResult Run(Context context) { GeckoWebBrowser browser = (GeckoWebBrowser)context.GetService(typeof(GeckoWebBrowser)); Debug.Assert(browser != null, "browser is null"); String regex = context.Resolve(RegularExpression); Debug.Assert(String.IsNullOrWhiteSpace(regex), "regular expression is null!"); String url = browser.Document.Uri; Match match = Regex.Match(url, regex); PhaseResult pr = new PhaseResult(this); if (match.Success) { // 表达式中所有的Group的id名 List<String> ids = RegexHelper.ParseGroupIndexNames(regex); // 按照Group的名字写入到ParameterProvider foreach (String id in ids) { context.ParameterProvider.SetString(id, match.Groups[id].Value); } pr.Succeed = true; pr.SetInt(Constant.RVCount, ids.Count); } else { pr.Succeed = false; } return pr; }