presbeus 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/presbeus +50 -9
  3. metadata +15 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5eccbc0625356b786735b43c6a71237c12f761dc
4
- data.tar.gz: 957e3c0d6604fa0875ac5e6662fcbaa30fe55663
3
+ metadata.gz: 6d6e9f092c95ac7a42ab4a3d734fe240169b0995
4
+ data.tar.gz: 77c0037c697c764b6e4da23cc2eccfdb14e69dfb
5
5
  SHA512:
6
- metadata.gz: 644f5372cab7a69065eb71e35b854efb0154c024ddcee54cbd5cd2db3adf4cad1d73c9fed53c3fb0da994c26dec0196d53705fb2c7ccf313c90f85a3d871abf1
7
- data.tar.gz: ac7c6a6dafbd0d1d40847e0001b0bfaa4700b87c12f8fbb0d078910b7e13c9079e10d546a7076f27c73c685a3cfdecd0ca39110a79089dde1abcc221be42b5d6
6
+ metadata.gz: 006affe9abb7bd67066afa54acde980344f216a2f6bf87f52c695a9ba1bfbef80c86376120472701592ec51a7a1fb1b4417951a0c62532e3bdbbe30b07575089
7
+ data.tar.gz: 829fd5d5c602b3fb7a739a8bfdfa60ea30ba4d01a6e3cd9739b54f8a08315e5a82d93b6b11137b8d084df4b2b7a937572fd712f395fa01e5e94d41fdcb0c0d03
data/bin/presbeus CHANGED
@@ -6,7 +6,10 @@ require 'time_ago_in_words'
6
6
  require 'terminal-table'
7
7
  require 'highline'
8
8
  require 'colorize'
9
- require "readline"
9
+ require 'readline'
10
+ #require 'websocket-eventmachine-client'
11
+ require 'kontena-websocket-client'
12
+ require 'open-uri'
10
13
 
11
14
  class Time
12
15
 
@@ -18,6 +21,7 @@ class Presbeus
18
21
 
19
22
  def initialize_arguments
20
23
  argument(:help, [], "show this help") { help }
24
+ argument(:realtime, [], "handle realtime event stream") { realtime }
21
25
  argument(:shell, [], "run in an interactive shell") { shell }
22
26
  argument(:devices, [], "list devices") { puts table devices }
23
27
  argument(:pushes, [], "list pushes") { puts table pushes_with_color }
@@ -42,18 +46,52 @@ class Presbeus
42
46
  initialize_arguments
43
47
  configuration_path = "#{ENV['HOME']}/.config/presbeus.yml"
44
48
  configuration = YAML.load_file configuration_path
45
- token = `#{configuration['password_command']}`
46
- @headers = {"Access-Token" => token, "Content-Type" => "json"}
49
+ @token = `#{configuration['password_command']}`.chomp
50
+ @notify_command = configuration['notify_command']
51
+ @headers = {"Access-Token" => @token, "Content-Type" => "json"}
52
+ @api_prefix = 'https://api.pushbullet.com/v2/'
53
+ end
54
+
55
+ def realtime_no_reconnect
56
+ uri = "wss://stream.pushbullet.com/websocket/#{@token}"
57
+ Kontena::Websocket::Client.connect(uri, ping_timeout: 60) do |client|
58
+ client.on_pong do |time, delay|
59
+ p time, delay
60
+ end
61
+ client.read do |message|
62
+ json = JSON.parse(message)
63
+ type = json["type"]
64
+ if type != "nop"
65
+ if type == "tickle"
66
+ puts(table(pushes_with_color(Time.now.to_i) do |push|
67
+ `#{@notify_command} "#{push[1]}"` if @notify_command
68
+ end))
69
+ end
70
+ else
71
+ client.send message # pong
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ def realtime
78
+ while true
79
+ begin
80
+ realtime_no_reconnect
81
+ rescue Kontena::Websocket::TimeoutError => e
82
+ puts "timeout #{e}"
83
+ end
84
+ end
47
85
  end
48
86
 
49
87
  def post_v2 what, payload
50
88
  RestClient.post(
51
- 'https://api.pushbullet.com/v2/' + what, payload.to_json, @headers)
89
+ @api_prefix + what, payload.to_json, @headers)
52
90
  end
53
91
 
54
92
  def get_v2 what
55
93
  response = RestClient.get(
56
- 'https://api.pushbullet.com/v2/' + what, @headers)
94
+ @api_prefix + what, @headers)
57
95
  JSON.parse response.body
58
96
  end
59
97
 
@@ -74,8 +112,10 @@ class Presbeus
74
112
  get_v2("permanents/#{device}_thread_#{id}")["thread"]
75
113
  end
76
114
 
77
- def pushes
78
- get_v2("pushes")["pushes"].map do |push|
115
+ def pushes modified_after = nil
116
+ path = "pushes"
117
+ path += "?modified_after=#{modified_after}" if modified_after
118
+ get_v2(path)["pushes"].map do |push|
79
119
  [Time.at(push["created"].to_i).ago_in_words, push["body"]]
80
120
  end
81
121
  end
@@ -151,8 +191,9 @@ class Presbeus
151
191
  res
152
192
  end
153
193
 
154
- def pushes_with_color
155
- pushes.reverse.map do |push|
194
+ def pushes_with_color modified_after = nil
195
+ pushes(modified_after).reverse.map do |push|
196
+ yield(push) if block_given?
156
197
  ["\n" + push[0] + "\n" + with_color(wrap(push[1], width_2), width_2, :green)]
157
198
  end
158
199
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: presbeus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olivier Abdesselam
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: kontena-websocket-client
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1'
83
97
  description: Allows to view/send pushbullet SMS
84
98
  email:
85
99
  executables: