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); } }
public async void GetPushesWithLimit() { try { var filter = new PushResponseFilter() { Limit = 1 }; var results = await Client.GetPushes(filter); } catch (Exception ex) { Assert.Fail(ex.Message); } }
public async void GetPushesActive() { try { var filter = new PushResponseFilter() { Active = true }; var results = await Client.GetPushes(filter); } catch (Exception ex) { Assert.Fail(ex.Message); } }
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); } }
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); } }
public void GatAllPushesByEmail() { try { var filter = new PushResponseFilter() { Email = "*****@*****.**" }; var results = Client.GetPushes(filter); } catch (Exception ex) { Assert.Fail(ex.Message); } }
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); }
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); } }
/// <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; } }
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; } }