'A C# parser for Web Links (RFC 5988)

Anyone created an open source C# parser for Web Links HTTP "Link" header? See:
https://www.rfc-editor.org/rfc/rfc5988.

Example:

Link: <http://example.com/TheBook/chapter2>; rel="previous"; title="previous chapter"

Thanks.

Update: Ended up creating my own parser: https://github.com/JornWildt/Ramone/blob/master/Ramone/Utility/WebLinkParser.cs. Feel free to use it.



Solution 1:[1]

Here's an extension method I've used:

public static Dictionary<string, string> ParseLinksHeader(
    this HttpResponseMessage response)
{
    var links = new Dictionary<string, string>();

    response.Headers.TryGetValues("link", out var headers);
    if (headers == null) return links;

    var matches = Regex.Matches(
        headers.First(),
        @"<(?<url>[^>]*)>;\s+rel=""(?<link>\w+)\""");
    
    foreach(Match m in matches)
        links.Add(m.Groups["link"].Value, m.Groups["url"].Value);

    return links;
}

Solution 2:[2]

Take the HTML Agility Pack and use the right

SelectNodes

query.

using HtmlAgilityPack;

namespace WebScraper
{
    class Program
    {
        static void Main(string[] args)
        {
            HtmlWeb web = new HtmlWeb();
            HtmlDocument doc =web.Load(url);
            foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@Link]"))
            {
            }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Seth Reno
Solution 2 weismat