/// <summary> /// Submits the body of the form. /// http://www.w3.org/html/wg/drafts/html/master/forms.html#submit-body /// </summary> void SubmitAsEntityBody(Url action) { var encoding = String.IsNullOrEmpty(AcceptCharset) ? Owner.CharacterSet : AcceptCharset; var formDataSet = ConstructDataSet(); var enctype = Enctype; var mimeType = String.Empty; Stream result = null; if (enctype.Equals(MimeTypes.StandardForm, StringComparison.OrdinalIgnoreCase)) { result = formDataSet.AsUrlEncoded(TextEncoding.Resolve(encoding)); mimeType = MimeTypes.StandardForm; } else if (enctype.Equals(MimeTypes.MultipartForm, StringComparison.OrdinalIgnoreCase)) { result = formDataSet.AsMultipart(TextEncoding.Resolve(encoding)); mimeType = String.Concat(MimeTypes.MultipartForm, "; boundary=", formDataSet.Boundary); } else if (enctype.Equals(MimeTypes.Plain, StringComparison.OrdinalIgnoreCase)) { result = formDataSet.AsPlaintext(TextEncoding.Resolve(encoding)); mimeType = MimeTypes.Plain; } _navigationTask = NavigateTo(action, HttpMethod.Post, result, mimeType); }
/// <summary> /// More information can be found at: /// http://www.w3.org/html/wg/drafts/html/master/forms.html#submit-data-post /// </summary> DocumentRequest PostToData(Url action, IHtmlElement submitter) { var encoding = String.IsNullOrEmpty(AcceptCharset) ? Owner.CharacterSet : AcceptCharset; var formDataSet = ConstructDataSet(submitter); var enctype = Enctype; var result = String.Empty; var stream = CreateBody(enctype, TextEncoding.Resolve(encoding), formDataSet); using (var sr = new StreamReader(stream)) { result = sr.ReadToEnd(); } if (action.Href.Contains("%%%%")) { result = TextEncoding.UsAscii.GetBytes(result).UrlEncode(); action.Href = action.Href.ReplaceFirst("%%%%", result); } else if (action.Href.Contains("%%")) { result = TextEncoding.Utf8.GetBytes(result).UrlEncode(); action.Href = action.Href.ReplaceFirst("%%", result); } return(GetActionUrl(action)); }
/// <summary> /// More information can be found at: /// http://www.w3.org/html/wg/drafts/html/master/forms.html#submit-mailto-body /// </summary> void MailAsBody(Url action) { var formDataSet = ConstructDataSet(); var enctype = Enctype; var encoding = TextEncoding.Resolve(UsAscii); var body = String.Empty; if (enctype.Equals(MimeTypes.StandardForm, StringComparison.OrdinalIgnoreCase)) { using (var sr = new StreamReader(formDataSet.AsUrlEncoded(encoding))) body = sr.ReadToEnd(); } else if (enctype.Equals(MimeTypes.MultipartForm, StringComparison.OrdinalIgnoreCase)) { using (var sr = new StreamReader(formDataSet.AsMultipart(encoding))) body = sr.ReadToEnd(); } else if (enctype.Equals(MimeTypes.Plain, StringComparison.OrdinalIgnoreCase)) { using (var sr = new StreamReader(formDataSet.AsPlaintext(encoding))) body = sr.ReadToEnd(); } action.Query = "body=" + body.UrlEncode(encoding); GetActionUrl(action); }
ScriptOptions CreateOptions() { return(new ScriptOptions(_document) { Element = _script, Encoding = TextEncoding.Resolve(_script.CharacterSet) }); }
ScriptOptions CreateOptions() { return(new ScriptOptions { Context = _document.DefaultView, Document = _document, Element = _script, Encoding = TextEncoding.Resolve(_script.CharacterSet) }); }
ScriptOptions CreateOptions() { return(new ScriptOptions { Context = Owner.DefaultView, Document = Owner, Element = this, Encoding = TextEncoding.Resolve(CharacterSet) }); }
/// <summary> /// More information can be found at: /// http://www.w3.org/html/wg/drafts/html/master/forms.html#submit-mutate-action /// </summary> DocumentRequest MutateActionUrl(Url action, IHtmlElement submitter) { var encoding = String.IsNullOrEmpty(AcceptCharset) ? Owner.CharacterSet : AcceptCharset; var formDataSet = ConstructDataSet(submitter); var result = formDataSet.AsUrlEncoded(TextEncoding.Resolve(encoding)); using (var sr = new StreamReader(result)) action.Query = sr.ReadToEnd(); return(GetActionUrl(action)); }
/// <summary> /// More information can be found at: /// http://www.w3.org/html/wg/drafts/html/master/forms.html#submit-mutate-action /// </summary> void MutateActionUrl(Url action) { var encoding = String.IsNullOrEmpty(AcceptCharset) ? Owner.CharacterSet : AcceptCharset; var formDataSet = ConstructDataSet(); var result = formDataSet.AsUrlEncoded(TextEncoding.Resolve(encoding)); using (var sr = new StreamReader(result)) action.Query = sr.ReadToEnd(); GetActionUrl(action); }
/// <summary> /// More information can be found at: /// http://www.w3.org/html/wg/drafts/html/master/forms.html#submit-mailto-headers /// </summary> void MailWithHeaders(Url action) { var formDataSet = ConstructDataSet(); var result = formDataSet.AsUrlEncoded(TextEncoding.Resolve(UsAscii)); var headers = String.Empty; using (var sr = new StreamReader(result)) headers = sr.ReadToEnd(); action.Query = headers.Replace("+", "%20"); GetActionUrl(action); }
ScriptOptions CreateOptions() { var document = Owner; var context = document != null ? document.DefaultView : null; return(new ScriptOptions { Context = context, Document = document, Element = this, Encoding = TextEncoding.Resolve(CharacterSet) }); }
/// <summary> /// Submits the body of the form. /// http://www.w3.org/html/wg/drafts/html/master/forms.html#submit-body /// </summary> DocumentRequest SubmitAsEntityBody(Url target, IHtmlElement submitter) { var encoding = String.IsNullOrEmpty(AcceptCharset) ? Owner.CharacterSet : AcceptCharset; var formDataSet = ConstructDataSet(submitter); var enctype = Enctype; var body = CreateBody(enctype, TextEncoding.Resolve(encoding), formDataSet); if (enctype.Isi(MimeTypeNames.MultipartForm)) { enctype = String.Concat(MimeTypeNames.MultipartForm, "; boundary=", formDataSet.Boundary); } return(DocumentRequest.Post(target, body, enctype, source: this, referer: Owner.DocumentUri)); }
/// <summary> /// Creates a new set of document options from the given response with /// the provided configuration. /// </summary> /// <param name="response">The response to pass on.</param> /// <param name="encoding">The optional default encoding.</param> /// <param name="ancestor">The optional import ancestor.</param> public CreateDocumentOptions(IResponse response, Encoding encoding = null, IDocument ancestor = null) { var contentType = response.GetContentType(MimeTypeNames.Html); var charset = contentType.GetParameter(AttributeNames.Charset); var defaultEncoding = encoding ?? Encoding.UTF8; var source = new TextSource(response.Content, defaultEncoding); if (!String.IsNullOrEmpty(charset) && TextEncoding.IsSupported(charset)) { source.CurrentEncoding = TextEncoding.Resolve(charset); } _source = source; _contentType = contentType; _response = response; _ancestor = ancestor; }
/// <summary> /// Gets the associated encoding, if any. /// </summary> /// <param name="element">The element to get the encoding from.</param> /// <returns>The discovered encoding or null.</returns> protected virtual Encoding GetEncoding(IHtmlMetaElement element) { var charset = element.Charset; if (charset != null) { charset = charset.Trim(); if (TextEncoding.IsSupported(charset)) { return(TextEncoding.Resolve(charset)); } } var shouldParseContent = element.HttpEquivalent.Isi(HeaderNames.ContentType); return(shouldParseContent ? TextEncoding.Parse(element.Content ?? String.Empty) : null); }
public Encoding GetEncoding() { var charset = Charset; if (charset != null) { charset = charset.Trim(); if (TextEncoding.IsSupported(charset)) { return(TextEncoding.Resolve(charset)); } } var equiv = HttpEquivalent; var shouldParseContent = equiv != null && equiv.Isi(HeaderNames.ContentType); return(shouldParseContent ? TextEncoding.Parse(Content ?? String.Empty) : null); }
void SetEncoding(String charSet) { if (TextEncoding.IsSupported(charSet)) { var encoding = TextEncoding.Resolve(charSet); if (encoding != null) { try { _document.Source.CurrentEncoding = encoding; } catch (NotSupportedException) { _currentMode = XmlTreeMode.Initial; _document.ReplaceAll(null, true); _openElements.Clear(); } } } }
/// <summary> /// Gets the specified charset, if there has been any specified. /// </summary> /// <returns>The encoding or null.</returns> public Encoding GetEncoding() { var charset = Charset; if (charset != null) { charset = charset.Trim(); if (TextEncoding.IsSupported(charset)) { return(TextEncoding.Resolve(charset)); } } var equiv = HttpEquivalent; if (equiv != null && equiv.Equals(HeaderNames.ContentType, StringComparison.OrdinalIgnoreCase)) { return(TextEncoding.Parse(Content ?? String.Empty)); } return(null); }
/// <summary> /// More information can be found at: /// http://www.w3.org/html/wg/drafts/html/master/forms.html#submit-data-post /// </summary> void PostToData(Url action) { var encoding = String.IsNullOrEmpty(AcceptCharset) ? Owner.CharacterSet : AcceptCharset; var formDataSet = ConstructDataSet(); var enctype = Enctype; var result = String.Empty; if (enctype.Equals(MimeTypes.StandardForm, StringComparison.OrdinalIgnoreCase)) { using (var sr = new StreamReader(formDataSet.AsUrlEncoded(TextEncoding.Resolve(encoding)))) result = sr.ReadToEnd(); } else if (enctype.Equals(MimeTypes.MultipartForm, StringComparison.OrdinalIgnoreCase)) { using (var sr = new StreamReader(formDataSet.AsMultipart(TextEncoding.Resolve(encoding)))) result = sr.ReadToEnd(); } else if (enctype.Equals(MimeTypes.Plain, StringComparison.OrdinalIgnoreCase)) { using (var sr = new StreamReader(formDataSet.AsPlaintext(TextEncoding.Resolve(encoding)))) result = sr.ReadToEnd(); } if (action.Href.Contains("%%%%")) { result = result.UrlEncode(TextEncoding.Resolve(UsAscii)); action.Href = action.Href.ReplaceFirst("%%%%", result); } else if (action.Href.Contains("%%")) { result = result.UrlEncode(TextEncoding.Utf8); action.Href = action.Href.ReplaceFirst("%%", result); } _navigationTask = NavigateTo(action, HttpMethod.Get); }
public static Stream CreateBody(this FormDataSet formDataSet, String enctype, String?charset, IHtmlEncoder?htmlEncoder) { var encoding = TextEncoding.Resolve(charset); return(formDataSet.CreateBody(enctype, encoding, htmlEncoder ?? new DefaultHtmlEncoder())); }
private ScriptOptions CreateOptions() => new ScriptOptions(_document, _document.Loop) { Element = _script, Encoding = TextEncoding.Resolve(_script.CharacterSet) };
public static Stream CreateBody(this FormDataSet formDataSet, String enctype, String charset) { var encoding = TextEncoding.Resolve(charset); return(formDataSet.CreateBody(enctype, encoding)); }