remotedroid 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ffd9a9a0c4d6d86dcf23408d9345c0a57bef2b6a516b8effcce7dc4b2b8bb0d3
4
- data.tar.gz: e752e40ee31bf64505e84dc7c2e49a45f61185d3e2573dfb1f4b73526c8a5cb5
3
+ metadata.gz: f599ec7df2216b5703047cceb92aa8c0e654bde02155919e2f4495407367d1c7
4
+ data.tar.gz: a508f24d92d1886c10e18ab8288fd6aafc3784dcd0d69552b922629d768c1ced
5
5
  SHA512:
6
- metadata.gz: '090b89b8e66c0b6368015741e4db9b9344f6714c96f393efaa40a0a019f467fd04b078a716ae2a9ca2af6e687ea328eccbf67e1d87eee0a278281b34d72e0394'
7
- data.tar.gz: ed2ca4e908800cb5f88c34d5352cde163168959d994bf82c66a3f90b0e5bc187ccc6b73c9afcf24cd6fbe00fb52a668c3b2d5b29a09410f7ac7eb9614c401a79
6
+ metadata.gz: 5bd97bfa9e552a8ceb6c773d3aa3586a5be4728e53bea999d2b801c284f631fef21c5a090651028f048c5df6735a82ae1a7a94a493a3c79e9f6053e1d5eb2535
7
+ data.tar.gz: 6ade1995bbce809a3a65bcf3e9202127d3c9b53617c775c0ca75caa13a26830dac286b264143b6de3f48d15498582ee74aa043a3b54b9b67e430f0a93d14c6fc
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -45,6 +45,7 @@ require 'ruby-macrodroid'
45
45
  # ## Camera/Photo
46
46
  #
47
47
  # * Take Picture
48
+ # * Take Screenshot
48
49
  #
49
50
  # ## Connectivity
50
51
  #
@@ -66,7 +67,7 @@ require 'ruby-macrodroid'
66
67
  #
67
68
  # ## MacroDroid specific
68
69
  #
69
- # * Disable Macro
70
+ # * Enable/Disable Macro
70
71
  #
71
72
  # ## Media
72
73
  #
@@ -79,7 +80,7 @@ require 'ruby-macrodroid'
79
80
  # ## Screen
80
81
  #
81
82
  # * Keep Device Awake
82
- # * Screen On
83
+ # * Screen On/Off
83
84
  #
84
85
 
85
86
  # Variables which can be queried
@@ -197,6 +198,100 @@ m: stay awake off
197
198
  t: webhook
198
199
  a: stay awake off
199
200
 
201
+ m: Launch Google Play Music
202
+ t: webhook
203
+ a: Launch Google Play Music
204
+
205
+
206
+ m: Media Next
207
+ t: webhook
208
+ a:
209
+ Media Next
210
+ Simulate Media Button (Google Play Music)
211
+
212
+ m: Media Pause
213
+ t: webhook
214
+ a:
215
+ Media Pause
216
+ Simulate Media Button (Google Play Music)
217
+
218
+ m: Media Play
219
+ t: webhook
220
+ a:
221
+ Media Play
222
+ Simulate Media Button (Google Play Music)
223
+
224
+ m: Media Play Pause
225
+ t: webhook
226
+ a:
227
+ Media Play/Pause
228
+ Simulate Media Button (Google Play Music)
229
+
230
+ m: Media Previous
231
+ t: webhook
232
+ a:
233
+ Media Previous
234
+ Simulate Media Button (Google Play Music)
235
+
236
+ m: Media Stop
237
+ t: webhook
238
+ a:
239
+ Media Stop
240
+ Simulate Media Button (Google Play Music)
241
+
242
+ m: Open website
243
+ v: url
244
+ t: webhook
245
+ a: goto [lv=url]
246
+
247
+ m: Fill clipboard
248
+ v: clipboard
249
+ t: webhook
250
+ a:
251
+ Fill Clipboard
252
+ [lv=clipboard]
253
+
254
+ m: click text content
255
+ v: content
256
+ t: webhook
257
+ a:
258
+ UI Interaction
259
+ Click [[lv=content]]
260
+
261
+ m: Launch by package
262
+ v: package
263
+ t: webhook
264
+ a: Launch [lv=package]
265
+
266
+ m: Take Screenshot
267
+ t: webhook
268
+ a:
269
+ Take Screenshot
270
+ Save to device
271
+ a: wait 2 seconds
272
+ a: webhook
273
+
274
+ m: Voice search
275
+ t: webhook
276
+ a: Voice search
277
+
278
+ m: Ask Alexa
279
+ t: webhook
280
+ a: shortcut Ask Alexa
281
+
282
+ m: Set Auto Rotate
283
+ ; toggle doesn't currently work because of a bug with else if
284
+ v: state
285
+ t: webhook
286
+ a:
287
+ if state = 0
288
+ Auto Rotate On
289
+ Else If
290
+ Auto Rotate Off
291
+ else
292
+ Auto Rotate Toggle
293
+ end if
294
+
200
295
  m: Share location
201
296
  t:
202
297
  WebHook
@@ -276,9 +371,12 @@ m: Power connected
276
371
  t: Power Connected: Any
277
372
  a: webhook
278
373
 
279
- m: screen on off
374
+ m: Screen on
280
375
  t: screen on
281
- a: webhook
376
+ a:
377
+ webhook
378
+ identifier: screen_on_off
379
+ screen_on: true
282
380
 
283
381
  m: Power Button Toggle3
284
382
  t: Power Button Toggle (3)
@@ -305,69 +403,121 @@ m: In Vehicle
305
403
  t:
306
404
  Activity - In Vehicle
307
405
  Confidence >= 50%
308
- a: webhook
406
+ a:
407
+ webhook
408
+ identifier: activity
409
+ index: 0
309
410
 
310
411
  m: On Bicycle
311
412
  t:
312
413
  Activity - On Bicycle
313
414
  Confidence >= 50%
314
- a: webhook
315
-
415
+ a:
416
+ webhook
417
+ identifier: activity
418
+ index: 1
419
+
316
420
  m: Running
317
421
  t:
318
422
  Activity - Running
319
423
  Confidence >= 50%
320
- a: webhook
424
+ a:
425
+ webhook
426
+ identifier: activity
427
+ index: 2
321
428
 
322
429
  m: Walking
323
430
  t:
324
431
  Activity - Walking
325
432
  Confidence >= 50%
326
- a: webhook
433
+ a:
434
+ webhook
435
+ identifier: activity
436
+ index: 3
327
437
 
328
438
  m: Still
329
439
  t:
330
440
  Activity - Still
331
441
  Confidence >= 83%
332
- a: webhook
333
-
442
+ a:
443
+ webhook
444
+ identifier: activity
445
+ index: 4
446
+
334
447
  m: Swipe top left across
335
448
  t:
336
449
  Swipe Screen
337
450
  Top Left - Across
338
- a: webhook
451
+ a:
452
+ webhook
453
+ identifier: swipe
454
+ start: 0
455
+ motion: 0
339
456
 
340
457
  m: Swipe top left diagonal
341
458
  t:
342
459
  Swipe Screen
343
460
  Top Left - Diagonal
344
- a: webhook
461
+ a:
462
+ webhook
463
+ identifier: swipe
464
+ start: 0
465
+ motion: 1
345
466
 
346
467
  m: Swipe top left down
347
468
  t:
348
469
  Swipe Screen
349
470
  Top Left - Down
350
- a: webhook
471
+ a:
472
+ webhook
473
+ identifier: swipe
474
+ start: 0
475
+ motion: 2
351
476
 
352
477
  m: Swipe top right across
353
478
  t:
354
479
  Swipe Screen
355
480
  Top Right - Across
356
- a: webhook
481
+ a:
482
+ webhook
483
+ identifier: swipe
484
+ start: 1
485
+ motion: 0
486
+
357
487
 
358
488
  m: Swipe top right diagonal
359
489
  t:
360
490
  Swipe Screen
361
491
  Top Right - Diagonal
362
- a: webhook
492
+ a:
493
+ webhook
494
+ identifier: swipe
495
+ start: 1
496
+ motion: 1
363
497
 
364
498
  m: Swipe top right down
365
499
  t:
366
500
  Swipe Screen
367
501
  Top Right - Down
368
- a: webhook
502
+ a:
503
+ webhook
504
+ identifier: swipe
505
+ start: 1
506
+ motion: 2
369
507
 
508
+ m: flip from up to down
509
+ t: Flip Device Face Up -> Face Down
510
+ a:
511
+ webhook
512
+ identifier: flip_device
513
+ facedown: true
370
514
 
515
+ m: flip from down to up
516
+ t: Flip Device Face Down -> Face Up
517
+ a:
518
+ webhook
519
+ identifier: flip_device
520
+ facedown: false
371
521
  EOF
372
522
 
373
523
 
@@ -423,8 +573,19 @@ module RemoteDroid
423
573
 
424
574
  context, json = msg.split(/:\s+/,2)
425
575
  category, action = context.split('/',2)
426
- @remote.control.method(action.to_sym)\
427
- .call(JSON.parse(json, symbolize_names: true))
576
+
577
+ h = JSON.parse(json, symbolize_names: true)
578
+
579
+ if action == 'force_macro_run' and h[:serverside] then
580
+
581
+ a = @remote.run_macro(h)
582
+ a.each {|msg| self.notice 'macrodroid/action: ' + msg }
583
+
584
+ else
585
+
586
+ @remote.control.method(action.to_sym).call(h)
587
+
588
+ end
428
589
 
429
590
  end
430
591
 
@@ -3,8 +3,9 @@ module RemoteDroid
3
3
  class Client
4
4
  using ColouredText
5
5
 
6
- def initialize(host='127.0.0.1')
7
- @drb = OneDrb::Client.new host: host, port: '5777'
6
+ def initialize(hostx='127.0.0.1', host: hostx, port: '5777', sps_host: 'sps.home', sps_port: '59000')
7
+ @drb = OneDrb::Client.new host: host, port: port
8
+ @sps = SPSPub.new host: sps_host, port: sps_port
8
9
  end
9
10
 
10
11
  def control
@@ -32,6 +33,11 @@ module RemoteDroid
32
33
 
33
34
  end
34
35
 
36
+ def run_macro(name)
37
+ a = @drb.run_macro name
38
+ a.each {|msg| @sps.notice 'macrodroid/action: ' + msg }
39
+ end
40
+
35
41
  def update(key, val)
36
42
  @drb.update key.to_sym, val
37
43
  end
@@ -40,8 +46,16 @@ module RemoteDroid
40
46
  @drb.store
41
47
  end
42
48
 
49
+ def syslog()
50
+ @drb.syslog
51
+ end
52
+
43
53
  # -- helpful methods -----------------
44
54
 
55
+ def ask_alexa()
56
+ control.ask_alexa
57
+ end
58
+
45
59
  def battery()
46
60
  query.battery
47
61
  end
@@ -50,6 +64,14 @@ module RemoteDroid
50
64
  query.cell_tower
51
65
  end
52
66
 
67
+ def click(s)
68
+ control.click content: s
69
+ end
70
+
71
+ def control_media(option='Play/Pause')
72
+ control.control_media({option: option})
73
+ end
74
+
53
75
  def disable(macro)
54
76
  control.disable macro
55
77
  end
@@ -57,11 +79,38 @@ module RemoteDroid
57
79
  def enable(macro)
58
80
  control.enable macro
59
81
  end
82
+
83
+ def fill_clipboard(text)
84
+ control.fill_clipboard clipboard: text
85
+ end
86
+
87
+ alias copy fill_clipboard
60
88
 
61
89
  def hotspot(state=nil)
62
90
  control.hotspot state
91
+ end
92
+
93
+ def launch_activity(app)
94
+
95
+ package = APPS[app]
96
+
97
+ if package then
98
+ control.launch_package package: package
99
+ else
100
+ r = APPS.find {|k,v| k =~ /#{app}/i}
101
+ control.launch_package(package: r[1]) if r
102
+ end
103
+
104
+ end
105
+
106
+ def launch_package(name)
107
+
108
+ control.launch_package(package: name)
109
+
63
110
  end
64
111
 
112
+ alias launch launch_activity
113
+
65
114
  def location()
66
115
  query.location
67
116
  end
@@ -69,7 +118,6 @@ module RemoteDroid
69
118
  def location_watch(refresh: '1 minute', interval: refresh,
70
119
  duration: '30 minutes')
71
120
 
72
-
73
121
  d = ChronicDuration.parse(duration)
74
122
  seconds = ChronicDuration.parse(interval)
75
123
  puts ("monitoring location every %s for %s" % [interval, duration]).info
@@ -89,10 +137,41 @@ module RemoteDroid
89
137
 
90
138
  end
91
139
 
140
+ def open_website(url)
141
+ control.open_website url: url
142
+ end
143
+
144
+ alias goto open_website
145
+ alias visit open_website
146
+
147
+ def ip()
148
+ query.ip
149
+ end
150
+
151
+ def next()
152
+ control_media('Next')
153
+ end
154
+
155
+ def pause()
156
+ control_media('Pause')
157
+ end
158
+
159
+ def play()
160
+ control_media('Play')
161
+ end
162
+
163
+ def play_pause()
164
+ control_media('Play/Pause')
165
+ end
166
+
92
167
  def photo()
93
168
  take_picture
94
169
  end
95
170
 
171
+ def previous()
172
+ control.control_media(option: 'Previous')
173
+ end
174
+
96
175
  def say(text)
97
176
  control.speak_text text
98
177
  end
@@ -115,6 +194,22 @@ module RemoteDroid
115
194
  screen :off
116
195
  end
117
196
 
197
+ def set_auto_rotate(state=nil)
198
+ control.set_auto_rotate state
199
+ end
200
+
201
+ def set_auto_rotate_on()
202
+ control.set_auto_rotate 0
203
+ end
204
+
205
+ def set_auto_rotate_off()
206
+ control.set_auto_rotate 1
207
+ end
208
+
209
+ def set_auto_rotate_toggle()
210
+ control.set_auto_rotate 2
211
+ end
212
+
118
213
  def stay_awake()
119
214
  control.stay_awake
120
215
  end
@@ -123,13 +218,20 @@ module RemoteDroid
123
218
  control.stay_awake_off
124
219
  end
125
220
 
221
+ alias awake_off stay_awake_off
222
+
223
+ def stop()
224
+ control_media(option: 'Stop')
225
+ end
226
+
126
227
  def take_picture(ftp_src: nil, fileout: '.')
127
228
 
128
229
  #screen.on
129
- r = query.take_picture
230
+ #launch 'camera'
130
231
 
131
232
  if ftp_src then
132
233
 
234
+ r = query.take_picture
133
235
  # give the device a second to write the image to file
134
236
  sleep 1
135
237
 
@@ -139,12 +241,37 @@ module RemoteDroid
139
241
  filename = ftp.ls.sort_by {|x| x[:ctime]}.last[:name]
140
242
  ftp.cp filename, fileout
141
243
 
244
+ else
245
+
246
+ contro.take_picture
247
+
142
248
  end
143
249
 
144
250
  end
145
251
 
146
252
  alias take_photo take_picture
147
253
 
254
+ def take_screenshot(ftp_src: nil, fileout: '.')
255
+
256
+ #screen.on
257
+
258
+
259
+ if ftp_src then
260
+
261
+ r = query.take_screenshot
262
+ # give the device a second to write the image to file
263
+ sleep 1
264
+
265
+ credentials, dir = ftp_src.match(/(ftp:\/\/[^\/]+)\/([^$]+)/).captures
266
+ ftp = MyMediaFTP.new(credentials)
267
+ ftp.cd dir
268
+ filename = ftp.ls.sort_by {|x| x[:ctime]}.last[:name]
269
+ ftp.cp filename, fileout
270
+
271
+ end
272
+
273
+ end
274
+
148
275
  def torch()
149
276
  control.torch
150
277
  end
@@ -152,6 +279,26 @@ module RemoteDroid
152
279
  def vibrate
153
280
  control.vibrate
154
281
  end
282
+
283
+ def voice_search
284
+ control.voice_search
285
+ end
286
+
287
+ def volume(context=nil)
288
+ query.volume context
289
+ end
290
+
291
+ alias vol volume
155
292
 
156
293
  end
294
+
295
+
296
+ class WebServer < AppHttp
297
+
298
+ def initialize(port: 9292)
299
+ super(RemoteDroid::Client.new, port: port)
300
+ end
301
+
302
+ end
303
+
157
304
  end
@@ -8,22 +8,42 @@ module RemoteDroid
8
8
 
9
9
  end
10
10
 
11
+ def ask_alexa(options={})
12
+ http_exec 'ask-alexa', options
13
+ end
14
+
11
15
  def bluetooth()
12
- @bluetooth
16
+ #to-do
13
17
  end
14
18
 
15
19
  def camera_flash_light(options={})
16
20
  http_exec 'camera-flash-light', options
17
21
  end
18
22
 
23
+ def click(options={content: ''})
24
+ http_exec 'click-text-content', options
25
+ end
26
+
27
+ def control_media(options={})
28
+ http_exec 'media-' + options[:option].downcase.gsub(/\W/,'-')
29
+ end
30
+
19
31
  def disable(macro)
20
32
  http_exec 'disable-macro', {name: macro}
21
33
  end
22
34
 
23
35
  def enable(macro)
24
36
  http_exec 'enable-macro', {name: macro}
37
+ end
38
+
39
+ def fill_clipboard(options={})
40
+ http_exec 'fill-clipboard', options
25
41
  end
26
42
 
43
+ def force_macro_run(options={})
44
+ http_exec option[:macro_name].downcase.gsub(/ /,'-')
45
+ end
46
+
27
47
  def hotspot(state=nil)
28
48
 
29
49
  if state then
@@ -65,10 +85,38 @@ module RemoteDroid
65
85
 
66
86
  end
67
87
 
88
+ def launch_activity(options={app: ''})
89
+
90
+ return if options[:app].empty?
91
+
92
+ app = options[:app]
93
+
94
+ package = APPS[app]
95
+
96
+ if package then
97
+ launch_package package: package
98
+ else
99
+ r = APPS.find {|k,v| k =~ /#{app}/i}
100
+ launch_package(package: r[1]) if r
101
+ end
102
+
103
+ end
104
+
105
+ def launch_package(options={package: 'com.google.android.chrome'})
106
+ http_exec 'launch-by-package', options
107
+ end
108
+
68
109
  def location(options={})
69
110
  http_exec 'location'
70
111
  end
71
112
 
113
+ def open_website(options={url: ''})
114
+ http_exec 'open-website', options
115
+ end
116
+
117
+ alias goto open_website
118
+ alias visit open_website
119
+
72
120
  def say_current_time(options={})
73
121
  http_exec 'say-current-time'
74
122
  end
@@ -94,6 +142,29 @@ module RemoteDroid
94
142
  end
95
143
  end
96
144
 
145
+ def set_auto_rotate(state=nil)
146
+
147
+ if state then
148
+ http_exec 'set-auto-rotate', {state: state}
149
+ else
150
+
151
+ def self.on()
152
+ http_exec 'set-auto-rotate', {state: 0}
153
+ end
154
+
155
+ def self.off()
156
+ http_exec 'set-auto-rotate', {state: 1}
157
+ end
158
+
159
+ def self.toggle()
160
+ http_exec 'set-auto-rotate', {state: 2}
161
+ end
162
+
163
+ self
164
+
165
+ end
166
+ end
167
+
97
168
  def share_location(options={})
98
169
  http_exec 'share-location'
99
170
  end
@@ -126,6 +197,9 @@ module RemoteDroid
126
197
 
127
198
  alias take_photo take_picture
128
199
 
200
+ def take_screenshot(options={})
201
+ http_exec 'take-screenshot', options
202
+ end
129
203
 
130
204
  def toast(options={})
131
205
  http_exec :toast, options
@@ -138,6 +212,10 @@ module RemoteDroid
138
212
  def vibrate(options={})
139
213
  http_exec :vibrate
140
214
  end
215
+
216
+ def voice_search(options={})
217
+ http_exec 'voice-search'
218
+ end
141
219
 
142
220
 
143
221
  def write(s)
@@ -2,7 +2,7 @@ module RemoteDroid
2
2
 
3
3
  class Controller
4
4
 
5
- attr_reader :model, :control
5
+ attr_reader :model, :control, :syslog
6
6
  attr_accessor :title, :macros, :store
7
7
 
8
8
  def initialize(mcs, model=MODEL, deviceid: nil, debug: false)
@@ -25,18 +25,25 @@ module RemoteDroid
25
25
  names = @macros.map {|x| x.triggers.first.type}.uniq
26
26
  #@control.enable names.first.to_s.gsub('_',' ')
27
27
  puts 'Enabling ' + names.join(',')
28
-
28
+ =begin
29
29
  Thread.new do
30
30
  names.each do |title|
31
31
  @control.enable title.to_s.gsub('_',' ')
32
32
  sleep 0.8
33
33
  end
34
34
  end
35
-
35
+ =end
36
36
  end
37
37
 
38
- def export(s)
39
- @macros = MacroDroid.new(s).macros
38
+ def delete_all()
39
+ @macros = []
40
+ end
41
+
42
+ def export(s, replace: false)
43
+
44
+ macros = MacroDroid.new(s).macros
45
+ replace ? @macros = macros : @macros << macros
46
+
40
47
  end
41
48
 
42
49
  def invoke(name, options={})
@@ -105,8 +112,17 @@ module RemoteDroid
105
112
  @model.request s
106
113
  end
107
114
 
115
+ def run_macro(macro_name: '')
116
+
117
+ found = @macros.find do |macro|
118
+ macro.title.downcase == macro_name.downcase
119
+ end
120
+
121
+ found.run if found
122
+
123
+ end
108
124
 
109
- def trigger(name, detail={time: Time.now})
125
+ def trigger(name, detail={})
110
126
 
111
127
  macros = @macros.select do |macro|
112
128
 
@@ -117,12 +133,14 @@ module RemoteDroid
117
133
  #
118
134
  valid_trigger = macro.match?(name, detail, @model.op)
119
135
 
120
- puts 'valid_trigger: ' + valid_trigger.inspect if @debug
136
+ #puts 'valid_trigger: ' + valid_trigger.inspect if @debug
121
137
 
122
- if valid_trigger then
123
- @syslog << [Time.now, :trigger, name]
124
- @syslog << [Time.now, :macro, macro.title]
125
- end
138
+ #if valid_trigger then
139
+ # @syslog << [Time.now, :trigger, name]
140
+ # @syslog << [Time.now, :macro, macro.title]
141
+ #end
142
+
143
+ @syslog << [Time.now, name, detail]
126
144
 
127
145
  valid_trigger
128
146
 
@@ -143,7 +161,9 @@ module RemoteDroid
143
161
  val.keys.first.to_sym
144
162
  end
145
163
 
146
- @store[key] = val
164
+ @syslog << [id, val]
165
+ @store[key] = val
166
+
147
167
  end
148
168
 
149
169
  end
@@ -50,6 +50,31 @@ module RemoteDroid
50
50
  @callback.query(:'take-picture')
51
51
  end
52
52
 
53
+ def take_screenshot()
54
+ @callback.query(:'take-screenshot')
55
+ end
56
+
57
+ def volume(context=nil)
58
+
59
+ if context then
60
+ q(context)
61
+ else
62
+
63
+ def self.alarm() q(:vol_alarm) end
64
+ def self.bt_voice() q(:vol_bt_voice) end
65
+ def self.call() q(:vol_call) end
66
+ def self.music() q(:vol_music) end
67
+ def self.notify() q(:vol_notif) end
68
+ def self.system() q(:vol_system) end
69
+
70
+ self
71
+
72
+ end
73
+ end
74
+
75
+ alias vol volume
76
+
77
+
53
78
  private
54
79
 
55
80
  def q(id)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remotedroid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  io3WPRDjULC924M5S8wbrus31v2AUjqFBPvmHr7caf/VHErWypV482xcDhWt1eif
36
36
  0G2k2ptozXcBS9odsqGUTb5N
37
37
  -----END CERTIFICATE-----
38
- date: 2020-10-20 00:00:00.000000000 Z
38
+ date: 2020-10-25 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: onedrb
@@ -97,6 +97,46 @@ dependencies:
97
97
  - - ">="
98
98
  - !ruby/object:Gem::Version
99
99
  version: 0.3.7
100
+ - !ruby/object:Gem::Dependency
101
+ name: sps-pub
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '0.5'
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 0.5.5
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0.5'
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: 0.5.5
120
+ - !ruby/object:Gem::Dependency
121
+ name: apphttp
122
+ requirement: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 0.2.0
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '0.2'
130
+ type: :runtime
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 0.2.0
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '0.2'
100
140
  - !ruby/object:Gem::Dependency
101
141
  name: ruby-macrodroid
102
142
  requirement: !ruby/object:Gem::Requirement
@@ -106,7 +146,7 @@ dependencies:
106
146
  version: '0.9'
107
147
  - - ">="
108
148
  - !ruby/object:Gem::Version
109
- version: 0.9.12
149
+ version: 0.9.17
110
150
  type: :runtime
111
151
  prerelease: false
112
152
  version_requirements: !ruby/object:Gem::Requirement
@@ -116,7 +156,7 @@ dependencies:
116
156
  version: '0.9'
117
157
  - - ">="
118
158
  - !ruby/object:Gem::Version
119
- version: 0.9.12
159
+ version: 0.9.17
120
160
  description:
121
161
  email: james@jamesrobertson.eu
122
162
  executables: []
metadata.gz.sig CHANGED
Binary file