using System; using System.Collections.Generic; using System.Concurrency; using System.Linq; using GalaSoft.MvvmLight.Messaging; using MahTweets.Core.Extensions.MahTweets.Core.Extensions; using MahTweets.Core.Interfaces; namespace MahTweets.Extensions.Twitter { public class SubscribeToSearchTwitter { public string Term; } public class TwitterSearchSubscriber : IStatusSubscriber { public string Tag { get { return "search"; } } private readonly IScheduler _scheduler; public TwitterSearchSubscriber(IScheduler scheduler) { _scheduler = scheduler; Settings = new Dictionary(); } public TwitterSearchSubscriber() : this(Scheduler.ThreadPool) { } public string Term { get { return (string)Settings["Term"]; } set { if (!Settings.ContainsKey("Term")) Settings.Add("Term", value); Settings["Term"] = value; } } public IDictionary Settings { get; set; } public void Subscribe(IObservable source, IObserver target) { try { Messenger.Default.Send(new SubscribeToSearchTwitter { Term = Term }); } catch (Exception) { } source.ObserveOn(_scheduler) .Where(Match) .Subscribe(target); } private bool Match(IStatus s) { return s.Types.HasType(string.Format("Search{0}", Term)) || s.Text.Contains(Term); } public void Unsubscribe() { } public bool HasSettings { get { return true; } } public void ShowSettings(Action completed) { } public bool Hidden { get { return false; } } } }