Esempio n. 1
0
        public static bool TryParse(string linkHeaderValue, out WebLink result)
        {
            var fields     = linkHeaderValue.Split(';').Select(x => x.Trim()).ToList();
            var linkValue  = fields.First().TrimStart('<').TrimEnd('>');
            var relTypes   = new List <string>();
            var mediaTypes = new List <string>();

            foreach (var field in fields)
            {
                var split = field.Split(new char[] { '=' }, 2);
                if (split.Length == 2)
                {
                    var key   = split[0].Trim();
                    var value = split[1].Trim();
                    if (key.Equals("rel"))
                    {
                        value = value.Trim('"');
                        relTypes.AddRange(value.Split(' '));
                    }
                    else if (key.Equals("type"))
                    {
                        value = value.Trim('"');
                        mediaTypes.Add(value);
                    }
                }
            }

            result = new WebLink {
                LinkValue = linkValue, RelationTypes = relTypes, MediaTypes = mediaTypes
            };
            return(true);
        }
        public void ParseSimpleLinkHeader()
        {
            var isValid = WebLink.TryParse("<http://example.org/foo.json>", out var link);

            Assert.True(isValid);
            Assert.Equal("http://example.org/foo.json", link.LinkValue);
        }
        public void ItCanParseAQuotedMediaType()
        {
            var isValid = WebLink.TryParse("<http://example.org/foo.json>;type=\"application/ld+json\"", out var link);

            Assert.True(isValid);
            Assert.Equal(new[] { "application/ld+json" }, link.MediaTypes);
        }
        public void ItCanParseMultipleValuesFromTheRelField()
        {
            var isValid = WebLink.TryParse("<http://example.org/foo.json>;rel=\"rel1 rel2\"", out var link);

            Assert.True(isValid);
            Assert.Equal(new[] { "rel1", "rel2" }, link.RelationTypes);
        }
Esempio n. 5
0
 private static IEnumerable <WebLink> ParseLinkHeaders(IEnumerable <string> linkHeaderValues)
 {
     foreach (var linkHeaderValue in linkHeaderValues)
     {
         if (WebLink.TryParse(linkHeaderValue, out var link))
         {
             yield return(link);
         }
     }
 }
        public void ItCanParseMultipleFields()
        {
            var isValid = WebLink.TryParse("<http://example.org/foo.json>;type=\"application/ld+json\";rel=alternate",
                                           out var link);

            Assert.True(isValid);
            Assert.Equal(new[] { "application/ld+json" }, link.MediaTypes);
            Assert.Equal(new string[] { "alternate" }, link.RelationTypes);
            Assert.Equal("http://example.org/foo.json", link.LinkValue);
        }