Click here to Skip to main content
15,886,519 members
Articles / Web Development / CSS3

AngleSharp

Rate me:
Please Sign up or sign in to vote.
5.00/5 (87 votes)
3 Jul 2013BSD28 min read 262K   4.3K   166  
Bringing the DOM to C# with a HTML5/CSS3 parser written in C#.
using System;

namespace AngleSharp.DOM.Html
{
    /// <summary>
    /// Represents the keygen element.
    /// </summary>
    public sealed class HTMLKeygenElement : HTMLElement, IValidation
    {
        #region Constant

        /// <summary>
        /// The keygen tag.
        /// </summary>
        internal const string Tag = "keygen";

        #endregion

        #region Members

        ValidityState vstate;
        private string error;

        #endregion

        #region ctor

        /// <summary>
        /// Creates a new HTML keygen element.
        /// </summary>
        internal HTMLKeygenElement()
        {
            vstate = new ValidityState();
            _name = Tag;
        }

        #endregion

        #region Properties

        /// <summary>
        /// Gets or sets the value of the name attribute.
        /// </summary>
        public string Name
        {
            get { return GetAttribute("name"); }
            set { SetAttribute("name", value); }
        }

        /// <summary>
        /// Gets or sets the challenge attribute.
        /// </summary>
        public string Challenge
        {
            get { return GetAttribute("challenge"); }
            set { SetAttribute("challenge", value); }
        }

        /// <summary>
        /// Gets or sets the type of key used.
        /// </summary>
        public Encryption Keytype
        {
            get { return ToEnum(GetAttribute("keytype"), Encryption.RSA); }
            set { SetAttribute("keytype", value.ToString()); }
        }

        /// <summary>
        /// Gets or sets if the keygen control should have focus when the page loads.
        /// </summary>
        public bool Autofocus
        {
            get { return GetAttribute("autofocus") != null; }
            set { SetAttribute("autofocus", value ? string.Empty : null); }
        }

        /// <summary>
        /// Gets the type of input control (keygen).
        /// </summary>
        public string Type
        {
            get { return Tag; }
        }

        /// <summary>
        /// Gets the current validation message.
        /// </summary>
        public string ValidationMessage
        {
            get { return vstate.CustomError ? error : string.Empty; }
        }

        /// <summary>
        /// Gets the boolean value false since keygen elements do not validate.
        /// </summary>
        public bool WillValidate
        {
            get { return false; }
        }

        /// <summary>
        /// Gets the current validation state of the keygen element.
        /// </summary>
        public ValidityState Validity
        {
            get { return vstate; }
        }

        /// <summary>
        /// Gets the associated HTML form element.
        /// </summary>
        public HTMLFormElement Form
        {
            get { return GetAssignedForm(); }
        }

        /// <summary>
        /// Gets or sets if the element is enabled or disabled.
        /// </summary>
        public bool Disabled
        {
            get { return GetAttribute("disabled") != null; }
            set { SetAttribute("disabled", value ? string.Empty : null); }
        }

        #endregion

        #region Internal properties

        /// <summary>
        /// Gets if the node is in the special category.
        /// </summary>
        protected internal override bool IsSpecial
        {
            get { return true; }
        }

        #endregion

        #region Methods

        /// <summary>
        /// Checks the validity. This is always true since keygen elements are
        /// not candidites for constraint validation.
        /// </summary>
        /// <returns>True.</returns>
        public bool CheckValidity()
        {
            return true;
        }

        /// <summary>
        /// Sets a custom validation error. If this is not the empty string,
        /// then the element is suffering from a custom validation error.
        /// </summary>
        /// <param name="error"></param>
        public void SetCustomValidity(string error)
        {
            vstate.CustomError = !string.IsNullOrEmpty(error);
            this.error = error;
        }

        #endregion

        #region Enumeration

        /// <summary>
        /// An enumeration of possible keytype values.
        /// </summary>
        public enum Encryption : ushort
        {
            /// <summary>
            /// The RSA encryption.
            /// </summary>
            RSA
        }

        #endregion
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The BSD License


Written By
Chief Technology Officer
Germany Germany
Florian lives in Munich, Germany. He started his programming career with Perl. After programming C/C++ for some years he discovered his favorite programming language C#. He did work at Siemens as a programmer until he decided to study Physics.

During his studies he worked as an IT consultant for various companies. After graduating with a PhD in theoretical particle Physics he is working as a senior technical consultant in the field of home automation and IoT.

Florian has been giving lectures in C#, HTML5 with CSS3 and JavaScript, software design, and other topics. He is regularly giving talks at user groups, conferences, and companies. He is actively contributing to open-source projects. Florian is the maintainer of AngleSharp, a completely managed browser engine.

Comments and Discussions