/// <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(DocumentEncoding.Resolve(encoding)); mimeType = MimeTypes.StandardForm; } else if (enctype.Equals(MimeTypes.MultipartForm, StringComparison.OrdinalIgnoreCase)) { result = formDataSet.AsMultipart(DocumentEncoding.Resolve(encoding)); mimeType = String.Concat(MimeTypes.MultipartForm, "; boundary=", formDataSet.Boundary); } else if (enctype.Equals(MimeTypes.Plain, StringComparison.OrdinalIgnoreCase)) { result = formDataSet.AsPlaintext(DocumentEncoding.Resolve(encoding)); mimeType = MimeTypes.Plain; } _plannedNavigation = 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-mailto-body /// </summary> void MailAsBody(Url action) { var formDataSet = ConstructDataSet(); var enctype = Enctype; var encoding = DocumentEncoding.Resolve("us-ascii"); 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 { Context = Owner.DefaultView, Document = Owner, Element = this, Encoding = DocumentEncoding.Resolve(CharacterSet) }); }
/// <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(DocumentEncoding.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(DocumentEncoding.Resolve("us-ascii")); var headers = String.Empty; using (var sr = new StreamReader(result)) headers = sr.ReadToEnd(); action.Query = headers.Replace("+", "%20"); GetActionUrl(action); }
/// <summary> /// Sets the document's encoding to the given one. /// </summary> /// <param name="encoding">The encoding to use.</param> void SetEncoding(String encoding) { if (DocumentEncoding.IsSupported(encoding)) { var enc = DocumentEncoding.Resolve(encoding); if (enc != null) { doc.InputEncoding = enc.WebName; tokenizer.Stream.Encoding = enc; } } }
/// <summary> /// Sets the document's encoding to the given one. /// </summary> /// <param name="source">The source to change.</param> /// <param name="encoding">The encoding to use.</param> static void SetEncoding(SourceManager source, String encoding) { //TODO return; if (DocumentEncoding.IsSupported(encoding)) { var enc = DocumentEncoding.Resolve(encoding); if (enc != null) { source.Encoding = enc; } } }
/// <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(DocumentEncoding.Resolve(encoding)))) result = sr.ReadToEnd(); } else if (enctype.Equals(MimeTypes.MultipartForm, StringComparison.OrdinalIgnoreCase)) { using (var sr = new StreamReader(formDataSet.AsMultipart(DocumentEncoding.Resolve(encoding)))) result = sr.ReadToEnd(); } else if (enctype.Equals(MimeTypes.Plain, StringComparison.OrdinalIgnoreCase)) { using (var sr = new StreamReader(formDataSet.AsPlaintext(DocumentEncoding.Resolve(encoding)))) result = sr.ReadToEnd(); } if (action.Href.Contains("%%%%")) { result = result.UrlEncode(DocumentEncoding.Resolve("us-ascii")); action.Href = action.Href.ReplaceFirst("%%%%", result); } else if (action.Href.Contains("%%")) { result = result.UrlEncode(System.Text.Encoding.UTF8); action.Href = action.Href.ReplaceFirst("%%", result); } _plannedNavigation = NavigateTo(action, HttpMethod.Get); }