protected override async Task <ResponseInfo> MakeRequest(InterationContext context) { var url = PrepareValue(context, Config.Url); var webAccessor = context.WebAccessor; return(await webAccessor.GetAsync(url)); }
public override async Task <InteractionResult> ExecuteAsync(InterationContext context) { var response = default(ResponseInfo); try { response = await MakeRequest(context); } catch (Exception e) { return(new InteractionResult { Ok = false, Message = e.Message }); } var pageInfo = new PageInfo(response.Url, response.Html); context.CurrentPage = pageInfo; context.Outputs = GetOutputValues(pageInfo); if (!ValidateOutput(context.Outputs, out string message)) { return(new InteractionResult { Ok = false, Message = message }); } return(new InteractionResult { Ok = true }); }
protected override async Task <ResponseInfo> MakeRequest(InterationContext context) { var config = Config; var page = context.CurrentPage; var form = GetForm(page); if (form == null) { throw new Exception("No form ws found"); } var formValues = MergeFormValues(context, form, config.FormValues); var webAccessor = context.WebAccessor; var url = PrepareValue(context, page.Url); if (!string.IsNullOrEmpty(form.Action)) { if (form.Action.StartsWith("/")) { var uri = new Uri(url); url = uri.GetLeftPart(UriPartial.Authority) + form.Action; } else { var pos = url.LastIndexOf("/"); url = url.Substring(0, pos + 1) + form.Action; } } return(await webAccessor.PostAsync(url, formValues)); }
public override Task <InteractionResult> ExecuteAsync(InterationContext context) { return(Task.FromResult(new InteractionResult { Ok = true, Target = Config.Target })); }
public override async Task <InteractionResult> ExecuteAsync(InterationContext context) { var value = GetValue(context, Config.Property); if (string.Compare(value, Config.Value, true) != 0) { return(await Task.FromResult(new InteractionResult { Ok = true })); } return(await Child.ExecuteAsync(context)); }
private NameValueCollection MergeFormValues(InterationContext context, FormInfo form, FormValue[] formValues) { var finalFormValues = form.FormValues; foreach (var v in formValues) { if (!string.IsNullOrEmpty(v.Value)) { finalFormValues[v.Name] = this.PrepareValue(context, v.Value); } else if (!string.IsNullOrEmpty(v.Text)) { finalFormValues[v.Name] = form.GetSelectedValueByText(v.Name, this.PrepareValue(context, v.Text)); } } return(finalFormValues); }
protected abstract Task <ResponseInfo> MakeRequest(InterationContext context);