Пример #1
0
        private async Task <TaggedLink> AnalyzeLinkAsync(Uri url, bool onlyHeaders = true)
        {
            var link = new TaggedLink();

            using (var client = new HttpClient())
            {
                var responseMessage = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);

                link.Url = responseMessage.RequestMessage.RequestUri;
                if (!(onlyHeaders) && responseMessage.Content.Headers.ContentType.MediaType.StartsWith("text/html"))
                {
                    string html;
                    using (var stream = await responseMessage.Content.ReadAsStreamAsync())
                        using (var reader = new StreamReader(stream, true))
                        {
                            html = await reader.ReadToEndAsync();
                        }

                    var regex = new Regex(@"(?<=<title.*?>)(.*?)(?=</title>)", RegexOptions.IgnoreCase);
                    link.Title = regex.Match(html).Value.Trim();
                }
            }

            return(link);
        }
Пример #2
0
 public static JsonApiLinkResource Create(TaggedLink link)
 {
     return(new JsonApiLinkResource
     {
         Attributes = new JsonApiLinkAttributes
         {
             Tags = string.Join(',', link.Tags),
             Title = link.Title,
             Url = link.Url.OriginalString,
         },
         Id = link.Id.ToString(),
         Links = CreateLinks(link.Id.ToString()),
     });
 }