Example #1
0
        void IMetaHandler.HandleContent(IHtmlMetaElement element)
        {
            var encoding = this.GetEncoding(element);

            if (encoding != null)
            {
                var document = element.Owner;
                document.Source.CurrentEncoding = encoding;
            }
        }
Example #2
0
        /// <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);
        }
Example #3
0
        public void ParseShopCategory()
        {
            Func <IHtmlDocument, string> doHtmlParser = ((document) =>
            {
                var blueListItemsLinq = document.QuerySelector("head").QuerySelectorAll("meta").Where(
                    m =>
                {
                    IHtmlMetaElement temp = m as IHtmlMetaElement;
                    if (temp != null)
                    {
                        return(temp.Name == "microscope-data");
                    }
                    return(false);
                });

                return(null);
            });

            ParseCommon("shop_category", doHtmlParser, shopDBBase);
        }
        void IMetaHandler.HandleContent(IHtmlMetaElement element)
        {
            var metaValue = element.HttpEquivalent;

            if (metaValue.Isi("refresh"))
            {
                var document    = element.Owner;
                var content     = element.Content;
                var baseUrl     = new Url(document.DocumentUri);
                var redirectUrl = baseUrl;
                var delay       = content;
                var sepIndex    = content.IndexOf(';');

                if (sepIndex >= 0)
                {
                    delay = content.Substring(0, sepIndex);
                    var rest = content.Substring(sepIndex + 1).Trim();

                    if (rest.StartsWith("url=", StringComparison.OrdinalIgnoreCase))
                    {
                        var relativeUrl = rest.Substring(4);

                        if (relativeUrl.Length > 0)
                        {
                            redirectUrl = new Url(baseUrl, relativeUrl);
                        }
                    }
                }

                if (Int32.TryParse(delay, out var delaySeconds))
                {
                    var delayTime = TimeSpan.FromSeconds(delaySeconds);

                    Task.Delay(delayTime)
                    .ContinueWith(task => document.Location.Assign(redirectUrl.Href));
                }
            }
        }
Example #5
0
 public void HandleContent(IHtmlMetaElement element)
 {
     element.Owner.Source.CurrentEncoding = Encoding.UTF8;
 }