Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
        /// <summary>
        /// Gets the default encoding for the given configuration.
        /// </summary>
        /// <param name="configuration">The configuration to use for getting the default encoding.</param>
        /// <returns>The current encoding.</returns>
        public static Encoding DefaultEncoding(this IConfiguration configuration)
        {
            if (configuration == null)
            {
                configuration = Configuration.Default;
            }

            return(DocumentEncoding.Suggest(configuration.GetLanguage()));
        }
Esempio n. 4
0
 ScriptOptions CreateOptions()
 {
     return(new ScriptOptions
     {
         Context = Owner.DefaultView,
         Document = Owner,
         Element = this,
         Encoding = DocumentEncoding.Resolve(CharacterSet)
     });
 }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
        /// <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;
                }
            }
        }
Esempio n. 8
0
        /// <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;
                }
            }
        }
Esempio n. 9
0
        /// <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);
        }