Esempio n. 1
0
        static void Main(string[] args)
        {
            string key = "--YOURKEYGOESHERE--";
            JavaScriptSerializer js     = new JavaScriptSerializer();
            PushbulletClient     Client = new PushbulletClient(key, TimeZoneInfo.Local);

            DateTime lastChecked = DateTime.Now;

            using (var ws = new WebSocket(string.Concat("wss://stream.pushbullet.com/websocket/", key)))
            {
                ws.OnMessage += (sender, e) =>
                {
                    WebSocketResponse response = js.Deserialize <WebSocketResponse>(e.Data);

                    switch (response.Type)
                    {
                    case "nop":
                        Console.WriteLine(string.Format("Updated {0}", DateTime.Now));
                        break;

                    case "tickle":
                        Console.WriteLine(string.Format("Tickle recieved on {0}. Go check it out.", DateTime.Now));
                        PushResponseFilter filter = new PushResponseFilter()
                        {
                            Active       = true,
                            ModifiedDate = lastChecked
                        };

                        var pushes = Client.GetPushes(filter);
                        foreach (var push in pushes.Pushes)
                        {
                            Console.WriteLine(push.Title);
                        }

                        lastChecked = DateTime.Now;
                        break;

                    case "push":
                        Console.WriteLine(string.Format("New push recieved on {0}.", DateTime.Now));
                        Console.WriteLine("Push Type: {0}", response.Push.Type);
                        Console.WriteLine("Response SubType: {0}", response.Subtype);
                        break;

                    default:
                        Console.WriteLine("new type that is not supported");
                        break;
                    }
                };
                ws.Connect();
                Console.ReadKey(true);
            }
        }
Esempio n. 2
0
        public async void GetPushesWithLimit()
        {
            try
            {
                var filter = new PushResponseFilter()
                {
                    Limit = 1
                };

                var results = await Client.GetPushes(filter);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 3
0
        public async void GetPushesActive()
        {
            try
            {
                var filter = new PushResponseFilter()
                {
                    Active = true
                };

                var results = await Client.GetPushes(filter);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 4
0
 public async void GetPushesNotesAndFilesSince()
 {
     try
     {
         PushResponseFilter filter = new PushResponseFilter()
         {
             ModifiedDate = new DateTime(2015, 3, 14),
             IncludeTypes = new PushResponseType[] { PushResponseType.Note, PushResponseType.File }
         };
         var results = await Client.GetPushes(filter);
     }
     catch (Exception ex)
     {
         Assert.Fail(ex.Message);
     }
 }
Esempio n. 5
0
        public async void GatAllPushesByEmail()
        {
            try
            {
                var filter = new PushResponseFilter()
                {
                    Email = TestHelper.GetConfig("Email")
                };

                var results = await Client.GetPushes(filter);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 6
0
        public void GatAllPushesByEmail()
        {
            try
            {
                var filter = new PushResponseFilter()
                {
                    Email = "*****@*****.**"
                };

                var results = Client.GetPushes(filter);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 7
0
        public static int Execute(PullOptions options)
        {
            var pbClient = CFG.Configuration.Default.PBClient;

            var prFilter = new PushResponseFilter()
            {
                Active       = true,
                IncludeTypes = new [] { PushResponseType.Link, PushResponseType.Note },
                ModifiedDate = options.Since,
            };

            var pushes = pbClient.GetPushes(prFilter).Pushes
                         .Where(p => p.TargetDeviceIden != null &&
                                p.TargetDeviceIden.Equals(CFG.Configuration.Default.PBServerDevice.Iden)).ToArray();

            foreach (var push in pushes)
            {
                switch (push.Type)
                {
                case PushResponseType.Note:
                    DetectNoteContent(push.Body);
                    continue;

                case PushResponseType.Link when push.Url.StartsWith("magnet:"):
                    ProcessMagnetLink(push);

                    continue;

                case PushResponseType.Link when push.Url.EndsWith(".torrent"):
                    ProcessTorrentUrl(push.Url);

                    continue;

                default:
                    // this shouldn't happen, but it's dirty to not have it
                    continue;
                }
            }

            return(Program.ExitNormal);
        }
Esempio n. 8
0
        public async void GetPushesAllSince()
        {
            try
            {
                PushResponseFilter filter = new PushResponseFilter()
                {
                    ModifiedDate = new DateTime(2015, 10, 15, 20, 10, 40, 32),
                    Active       = true
                };
                var results = await Client.GetPushes(filter);

                if (!string.IsNullOrWhiteSpace(results.Cursor))
                {
                    results = await Client.GetPushes(new PushResponseFilter(results.Cursor));
                }
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Gets the pushes.
        /// </summary>
        /// <param name="filter">The filter.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">
        /// filter
        /// or
        /// filter
        /// </exception>
        /// <exception cref="System.Exception">Connect issue.</exception>
        public PushResponseContainer GetPushes(PushResponseFilter filter)
        {
            try
            {
                #region pre-processing

                if (filter == null)
                {
                    throw new ArgumentNullException("filter");
                }

                string        queryString     = string.Empty;
                List <string> queryStringList = new List <string>();

                if (!string.IsNullOrWhiteSpace(filter.Cursor))
                {
                    string cursorQueryString = string.Format("cursor={0}", filter.Cursor);
                    queryStringList.Add(cursorQueryString);
                }
                else
                {
                    if (filter.ModifiedDate != null)
                    {
                        string modifiedDateQueryString = string.Format("modified_after={0}", filter.ModifiedDate.DateTimeToUnixTime());
                        queryStringList.Add(modifiedDateQueryString);
                    }

                    if (filter.Active != null)
                    {
                        string activeQueryString = string.Format("active={0}", (bool)filter.Active);
                        queryStringList.Add(activeQueryString);
                    }
                }

                //Email filtering can be done on either cursor or regular queries
                if (!string.IsNullOrWhiteSpace(filter.Email))
                {
                    string emailQueryString = string.Format("email={0}", filter.Email);
                    queryStringList.Add(emailQueryString);
                }

                //Join all of the query strings
                if (queryStringList.Count() > 0)
                {
                    queryString = string.Concat("?", string.Join("&", queryStringList));
                }

                #endregion


                #region processing

                PushResponseContainer      results            = new PushResponseContainer();
                BasicPushResponseContainer basicPushContainer = GetRequest <BasicPushResponseContainer>(string.Concat(PushbulletConstants.BaseUrl, PushbulletConstants.PushesUrls.Push, queryString).Trim());
                PushResponseContainer      pushContainer      = ConvertBasicPushResponseContainer(basicPushContainer);

                if (filter.IncludeTypes != null && filter.IncludeTypes.Count() > 0)
                {
                    foreach (var type in filter.IncludeTypes)
                    {
                        results.Pushes.AddRange(pushContainer.Pushes.Where(o => o.Type == type).ToList());
                    }
                    results.Pushes = results.Pushes.OrderByDescending(o => o.Created).ToList();
                }
                else
                {
                    results = pushContainer;
                }

                return(results);

                #endregion processing
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 10
0
        public void HandleResponseMainThread(WebSocketResponse response)
        {
            switch (response.Type)
            {
            // Heartbeat
            case "nop":
                Logger.WriteLine("PushBullet Heartbeat");
                if (!this.hasHiddenOnStartup)
                {
                    this.hasHiddenOnStartup = true;
                    this.Hide();
                    Logger.WriteLine("Saving access token to: " + Path.Combine(TextSettings.Folder, fileName));
                    TextSettings.Save(fileName, this.Client.AccessToken);
                }
                break;

            case "tickle":
                PushResponseFilter filter = new PushResponseFilter()
                {
                    Active       = true,
                    ModifiedDate = lastChecked
                };

                var pushes = Client.GetPushes(filter);
                foreach (var push in pushes.Pushes)
                {
                    if ((push.Created - lastChecked).TotalDays > 0)
                    {
                        lastChecked = push.Created;

                        using (Logger.Time("Processing Request"))
                        {
                            for (int i = 0; i < 3; i++)     // 3 attempts.
                            {
                                using (Logger.Time("Attempt " + i))
                                {
                                    try
                                    {
                                        this._RequestHandler.NewNotification(push.Title, push.Body);
                                        break;
                                    }
                                    catch (Exception exc)
                                    {
                                        Logger.WriteException(this, "FindBestMatchAndPlay", exc);
                                        System.Threading.Thread.Sleep(500);     // Give itunes a breath.
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        Logger.WriteLine("Ignoring Old PushBullet: " + push.Title);
                    }
                }
                break;

            case "push":
                Logger.WriteLine(string.Format("New push recieved on {0}.", DateTime.Now));
                Logger.WriteLine("Push Type: " + response.Push.Type);
                Logger.WriteLine("Response SubType: " + response.Subtype);
                break;

            default:
                Logger.WriteLine("PushBullet type not supported!");
                break;
            }
        }