private List<CodeGeneration> GetAllSelectCode(FiddlerSessionHolder sess, HtmlDocument htmlDocument) { var result = new List<CodeGeneration>(); foreach(var selectNode in htmlDocument.DocumentNode.SelectNodes(".//select")) { var selectNodeName = selectNode.Attributes.Contains("name") ? selectNode.Attributes["name"].Value : "!!!"; var select = new CodeGeneration("Select"); select.Header = "Options for "+selectNodeName; var paramz = new StringBuilder(); var options = selectNode.SelectNodes(".//option"); foreach (var optioNode in options) { paramz.AppendLine(String.Format("\t{{ \"{0}\",\"{1}\" }}, //{2} {3}", selectNodeName, optioNode.Attributes.Contains("value") ? optioNode.Attributes["value"].Value : "", optioNode.NextSibling.InnerText, optioNode.Attributes.Contains("selected") ? "<-default" : "")); } select.Text = paramz.ToString(); result.Add(select); } return result; }
protected CodeGeneration GetAllInputCode(FiddlerSessionHolder sess, HtmlDocument htmlDocument) { var allInput = new CodeGeneration("Request"); allInput.Header = "Code"; var inputNodes = htmlDocument.DocumentNode.SelectNodes(".//input"); if (inputNodes != null) { var p = inputNodes .Where(k => k.Attributes.FirstOrDefault(n => n.Name.ToLower() == "name") != null) .Select(k => { var nameAttr = k.Attributes.FirstOrDefault(n => n.Name.ToLower() == "name"); var valueAttr = k.Attributes.FirstOrDefault(n => n.Name.ToLower() == "value"); var typeAttr = k.Attributes.FirstOrDefault(n => n.Name.ToLower() == "type"); return new Tuple<string, string, string>( nameAttr == null ? null : nameAttr.Value, valueAttr == null ? "" : valueAttr.Value, typeAttr == null ? "default" : typeAttr.Value ); }).Where(k => k.Item1 != null); var paramz = new StringBuilder(); paramz.AppendLine(String.Format("var allParams = new NameValueCollection")); paramz.AppendLine("{"); foreach (var kvp in p) { paramz.AppendLine(String.Format("\t{{ \"{0}\",\"{1}\" }}, //Type: {2}", kvp.Item1, kvp.Item2, kvp.Item3)); } paramz.AppendLine("});"); allInput.Text = paramz.ToString(); } return allInput; }
private List<CodeGeneration> GetFormsCode(FiddlerSessionHolder sess, HtmlDocument htmlDocument) { var result = new List<CodeGeneration>(); HtmlNodeCollection nodes = html.DocumentNode.SelectNodes(".//form"); if (nodes == null) return result; foreach (var formNode in nodes) { var method = "GET"; var methodAttr = formNode.Attributes.FirstOrDefault(x => x.Name.ToLower() == "method"); if (methodAttr != null) method = methodAttr.Value.ToUpper(); var action = sess.FiddlerSession.fullUrl; var actionAttr = formNode.Attributes.FirstOrDefault(x => x.Name.ToLower() == "action"); if (actionAttr != null) action = sess.BrowsingResponse.FixPathToAbsolute(actionAttr.Value); var inputNodes = formNode.SelectNodes(".//input"); if(inputNodes==null) continue; var p = inputNodes .Where(k => k.Attributes.FirstOrDefault(n => n.Name.ToLower() == "name") != null) .Select(k => { var nameAttr = k.Attributes.FirstOrDefault(n => n.Name.ToLower() == "name"); var valueAttr = k.Attributes.FirstOrDefault(n => n.Name.ToLower() == "value"); return new Tuple<string, string, string>( nameAttr == null ? null : nameAttr.Value, valueAttr == null ? "" : valueAttr.Value, k.XPath); }).Where(k => k.Item1 != null); if (method == "GET") { result.Add(new CodeGeneration("Form: " + formNode.XPath) { Text = StrMakeNavigateGet(action, p), Header = action + " (" + method + ")" }); } else { result.Add(new CodeGeneration("Form: " + formNode.XPath) { Text = StrMakeNavigatePost(action, p), Header = action + " (" + method + ")" }); } } return result; }
private CodeGeneration GetRequestCode(FiddlerSessionHolder sess, HtmlDocument htmlDocument) { var requestCode = new CodeGeneration("Request"); var requestType = sess.FiddlerSession.oRequest.headers.HTTPMethod; requestCode.Header = sess.FiddlerSession.url + " (" + requestType + ")"; switch (requestType) { case "GET": requestCode.Text = StrNavigateGet(sess.FiddlerSession.fullUrl); break; case "POST": requestCode.Text = "todo " + GetIndex(); break; default: requestCode.Text = "Invalid requestType " + requestType; break; } return requestCode; }
public void AddSessionStep(FiddlerSessionHolder session) { ViewModel.Output.AddSession(session); }