GetEntityAidedText() private method

private GetEntityAidedText ( EntityDisplayMode displayMode = EntityDisplayMode.DisplayText ) : string
displayMode EntityDisplayMode
return string
 static void Instance_OnMentionReceived(TwitterStatus obj)
 {
     Show(new NormalNotificatorViewModel(MetroColors.Orange,
         obj.User, "mention from @" + obj.User.ScreenName, obj.GetEntityAidedText()));
 }
 static void Instance_OnStatusReceived(TwitterStatus obj)
 {
     Show(new NormalNotificatorViewModel(MetroColors.Cyan,
         obj.User, "@" + obj.User.ScreenName, obj.GetEntityAidedText()));
 }
Esempio n. 3
0
 private StatusModel(TwitterStatus status)
 {
     this.Status = status;
     ImageResolver.Resolve(status.GetEntityAidedText(true))
                  .Aggregate(new List<Tuple<Uri, Uri>>(), (l, i) =>
                  {
                      l.Add(i);
                      return l;
                  })
                  .Finally(() =>
                  {
                      var subj = Interlocked.Exchange(ref this._imagesSubject, null);
                      lock (subj)
                      {
                          subj.OnCompleted();
                          // WE SHOULD NOT CALL Dispose METHOD !!!
                          // http://stackoverflow.com/questions/16540853/why-does-subjectt-dispose-does-not-dispose-current-suscriptions
                          // subj.Dispose();
                      }
                  })
                  .Subscribe(l => this.Images = l);
 }
Esempio n. 4
0
        /// <summary>
        /// Get attached images in status. <para />
        /// Returns tuples of (original_uri, image_uri).
        /// </summary>
        /// <param name="status"></param>
        /// <returns></returns>
        public static IEnumerable<Tuple<Uri, Uri>> ResolveImages(TwitterStatus status)
        {
            var result = new List<Tuple<string, string>>();

            // pick attached images 
            status.Entities.Guard()
                  .Where(e => e.EntityType == EntityType.Media)
                  .ForEach(e => result.Add(Tuple.Create(e.OriginalUrl, e.MediaUrl)));

            // resolve url in status text
            var matches = UrlRegex.Matches(status.GetEntityAidedText(EntityDisplayMode.MediaUri)).Cast<Match>();
            matches.Select(m => m.Value).ForEach(s =>
            {
                if (SupportedExtents.Any(ext => s.EndsWith("." + ext)))
                {
                    result.Add(Tuple.Create(s, s));
                }
                else
                {
                    var key = ResolveTable.Keys.FirstOrDefault(s.StartsWith);
                    Func<string, string> resolver;
                    if (key != null && ResolveTable.TryGetValue(key, out resolver))
                    {
                        result.Add(Tuple.Create(s, resolver(s)));
                    }
                }
            });

            return result.Distinct(t => t.Item2)
                         .Where(t => Uri.IsWellFormedUriString(t.Item1, UriKind.Absolute) &&
                                     Uri.IsWellFormedUriString(t.Item2, UriKind.Absolute))
                         .Select(t => Tuple.Create(new Uri(t.Item1), new Uri(t.Item2)));
        }
Esempio n. 5
0
 private StatusModel(TwitterStatus status)
 {
     this.Status = status;
     ImageResolver.Resolve(status.GetEntityAidedText(true))
                  .Aggregate(new List<Tuple<Uri, Uri>>(), (l, i) =>
                  {
                      l.Add(i);
                      return l;
                  })
                  .Finally(() =>
                  {
                      var subj = Interlocked.Exchange(ref this._imagesSubject, null);
                      lock (subj)
                      {
                          subj.OnCompleted();
                          subj.Dispose();
                      }
                  })
                  .Subscribe(l => this.Images = l);
 }