Esempio n. 1
0
 public void Process(TimelineItemContainer timelineItemContainer)
 {
     foreach (var expander in _urlExpanders)
     {
         foreach (var uri in GetShortUrls(timelineItemContainer))
         {
             expander.IfCanExpand(
                 uri,
                 viewModel =>
                 {
                     var attachment = new UrlExpanderAttachment(viewModel);
                     timelineItemContainer.AddAttachment(attachment);
                 });
         }
     }
 }
Esempio n. 2
0
        private static IEnumerable<Uri> GetShortUrls(TimelineItemContainer timelineItemContainer)
        {
            IEnumerable<string> urls = null;
            if (timelineItemContainer.Metadata.Any(md => md.Key == "com.seesmic.timelineItem.UrlsDictionary"))
            {
                var urlsDictionaryMetadata = timelineItemContainer.Metadata.First(md => md.Key == "com.seesmic.timelineItem.UrlsDictionary");
                var urlsDictionary = urlsDictionaryMetadata.Value as IDictionary<string, string>;
                if (urlsDictionary != null)
                {
                    urls = urlsDictionary.Keys;
                }
            }

            if (urls == null)
            {
                urls = ShortUrlRegex.Matches(timelineItemContainer.TimelineItem.Text).Cast<Match>().Select(m =>
                    {
                        if (m.Value.StartsWith("(", StringComparison.Ordinal) && m.Value.EndsWith(")", StringComparison.Ordinal))
                        {
                            return m.Value.Substring(1, m.Value.Length - 2);
                        }

                        return m.Value;
                    });
            }

            // convert to URI, only return short URLs (no querystring, only slash is separating host and path)
            return urls.Select(urlText =>
                        {
                            Uri url;
                            if (Uri.TryCreate(urlText, UriKind.Absolute, out url))
                            {
                                return url;
                            }

                            return null;
                        })
                       .Where(url => url != null && string.IsNullOrEmpty(url.Query) && url.LocalPath.LastIndexOf('/') < 1);
        }
Esempio n. 3
0
 public void Remove(TimelineItemContainer timelineItemContainer)
 {
 }
Esempio n. 4
0
 public bool Filter(TimelineItemContainer timelineItemContainer)
 {
     return true;
 }
Esempio n. 5
0
 public void Deliver(TimelineItemContainer timelineItemContainer)
 {
 }