remotedroid 0.5.0 → 0.5.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/remotedroid.rb +255 -5
- data/lib/remotedroid/client.rb +102 -3
- data/lib/remotedroid/control.rb +44 -0
- data/lib/remotedroid/controller.rb +32 -12
- data/lib/remotedroid/query.rb +4 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a86c870441f3c62f297cbcfc00422258f19d0061d0f4379c825f8abfb1d37f4b
|
4
|
+
data.tar.gz: 71f5eef47bf451ea91cbbd0b0cf2d45d4c1f656505d97bc65287bf673e7e0416
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f018dbb7e614a4555a658a8723dacbfff6127388b80d5b78a161af07076438b214ad30ed7d09d97f23ce178ccf32ee533b55e4b3fe84444c4d4c73c1d0adde96
|
7
|
+
data.tar.gz: e373a0b5a31d9e6648376bf8a17e1745dc041658f7250767da2f6ab063b7a1ea621ad4cbc66cf7cdad2e467e048b5e7f8365f3597bf63d69d6635e47d093af33
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/remotedroid.rb
CHANGED
@@ -14,15 +14,30 @@ require 'ruby-macrodroid'
|
|
14
14
|
#
|
15
15
|
# # Triggers
|
16
16
|
#
|
17
|
+
# ## Battery/Power
|
18
|
+
#
|
19
|
+
# * Power button toggle
|
20
|
+
#
|
21
|
+
# ## Connectivity
|
22
|
+
#
|
23
|
+
# ### Wifi State Change
|
24
|
+
#
|
25
|
+
# * Connected to Network
|
26
|
+
#
|
17
27
|
# ## Device Events
|
18
28
|
#
|
19
29
|
# * screen on
|
20
30
|
#
|
21
31
|
# ## Sensors
|
22
|
-
#
|
32
|
+
#
|
33
|
+
# * Activity Recognition
|
23
34
|
# * proximity (near)
|
24
35
|
# * shake device
|
25
36
|
#
|
37
|
+
# ## User Input
|
38
|
+
#
|
39
|
+
# * Swipe Screen
|
40
|
+
#
|
26
41
|
# ------------------------------------
|
27
42
|
#
|
28
43
|
# # Actions
|
@@ -182,6 +197,79 @@ m: stay awake off
|
|
182
197
|
t: webhook
|
183
198
|
a: stay awake off
|
184
199
|
|
200
|
+
m: Launch Google Play Music
|
201
|
+
t: webhook
|
202
|
+
a: Launch Google Play Music
|
203
|
+
|
204
|
+
|
205
|
+
m: Media Next
|
206
|
+
t: webhook
|
207
|
+
a:
|
208
|
+
Media Next
|
209
|
+
Simulate Media Button (Google Play Music)
|
210
|
+
|
211
|
+
m: Media Pause
|
212
|
+
t: webhook
|
213
|
+
a:
|
214
|
+
Media Pause
|
215
|
+
Simulate Media Button (Google Play Music)
|
216
|
+
|
217
|
+
m: Media Play
|
218
|
+
t: webhook
|
219
|
+
a:
|
220
|
+
Media Play
|
221
|
+
Simulate Media Button (Google Play Music)
|
222
|
+
|
223
|
+
m: Media Play Pause
|
224
|
+
t: webhook
|
225
|
+
a:
|
226
|
+
Media Play/Pause
|
227
|
+
Simulate Media Button (Google Play Music)
|
228
|
+
|
229
|
+
m: Media Previous
|
230
|
+
t: webhook
|
231
|
+
a:
|
232
|
+
Media Previous
|
233
|
+
Simulate Media Button (Google Play Music)
|
234
|
+
|
235
|
+
m: Media Stop
|
236
|
+
t: webhook
|
237
|
+
a:
|
238
|
+
Media Stop
|
239
|
+
Simulate Media Button (Google Play Music)
|
240
|
+
|
241
|
+
m: Open website
|
242
|
+
v: url
|
243
|
+
t: webhook
|
244
|
+
a: goto [lv=url]
|
245
|
+
|
246
|
+
m: Fill clipboard
|
247
|
+
v: clipboard
|
248
|
+
t: webhook
|
249
|
+
a:
|
250
|
+
Fill Clipboard
|
251
|
+
[lv=clipboard]
|
252
|
+
|
253
|
+
m: click text content
|
254
|
+
v: content
|
255
|
+
t: webhook
|
256
|
+
a:
|
257
|
+
UI Interaction
|
258
|
+
Click [[lv=content]]
|
259
|
+
|
260
|
+
m: Launch by package
|
261
|
+
v: package
|
262
|
+
t: webhook
|
263
|
+
a: Launch [lv=package]
|
264
|
+
|
265
|
+
m: Take Screenshot
|
266
|
+
t: webhook
|
267
|
+
a:
|
268
|
+
Take Screenshot
|
269
|
+
Save to device
|
270
|
+
a: wait 2 seconds
|
271
|
+
a: webhook
|
272
|
+
|
185
273
|
m: Share location
|
186
274
|
t:
|
187
275
|
WebHook
|
@@ -261,12 +349,163 @@ m: Power connected
|
|
261
349
|
t: Power Connected: Any
|
262
350
|
a: webhook
|
263
351
|
|
264
|
-
m:
|
352
|
+
m: Screen on
|
265
353
|
t: screen on
|
354
|
+
a:
|
355
|
+
webhook
|
356
|
+
identifier: screen_on_off
|
357
|
+
screen_on: true
|
358
|
+
|
359
|
+
m: Power Button Toggle3
|
360
|
+
t: Power Button Toggle (3)
|
266
361
|
a: webhook
|
267
362
|
|
268
|
-
|
363
|
+
m: Power Button Toggle4
|
364
|
+
t: Power Button Toggle (4)
|
365
|
+
a: webhook
|
366
|
+
|
367
|
+
m: Power Button Toggle5
|
368
|
+
t: Power Button Toggle (5)
|
369
|
+
a: webhook
|
370
|
+
|
371
|
+
m: Connected to network
|
372
|
+
t:
|
373
|
+
Connected to network
|
374
|
+
Any Network
|
375
|
+
a: wait 2 seconds
|
376
|
+
a:
|
377
|
+
webhook
|
378
|
+
ssid: [ssid]
|
379
|
+
|
380
|
+
m: In Vehicle
|
381
|
+
t:
|
382
|
+
Activity - In Vehicle
|
383
|
+
Confidence >= 50%
|
384
|
+
a:
|
385
|
+
webhook
|
386
|
+
identifier: activity
|
387
|
+
index: 0
|
388
|
+
|
389
|
+
m: On Bicycle
|
390
|
+
t:
|
391
|
+
Activity - On Bicycle
|
392
|
+
Confidence >= 50%
|
393
|
+
a:
|
394
|
+
webhook
|
395
|
+
identifier: activity
|
396
|
+
index: 1
|
397
|
+
|
398
|
+
m: Running
|
399
|
+
t:
|
400
|
+
Activity - Running
|
401
|
+
Confidence >= 50%
|
402
|
+
a:
|
403
|
+
webhook
|
404
|
+
identifier: activity
|
405
|
+
index: 2
|
406
|
+
|
407
|
+
m: Walking
|
408
|
+
t:
|
409
|
+
Activity - Walking
|
410
|
+
Confidence >= 50%
|
411
|
+
a:
|
412
|
+
webhook
|
413
|
+
identifier: activity
|
414
|
+
index: 3
|
415
|
+
|
416
|
+
m: Still
|
417
|
+
t:
|
418
|
+
Activity - Still
|
419
|
+
Confidence >= 83%
|
420
|
+
a:
|
421
|
+
webhook
|
422
|
+
identifier: activity
|
423
|
+
index: 4
|
424
|
+
|
425
|
+
m: Swipe top left across
|
426
|
+
t:
|
427
|
+
Swipe Screen
|
428
|
+
Top Left - Across
|
429
|
+
a:
|
430
|
+
webhook
|
431
|
+
identifier: swipe
|
432
|
+
start: 0
|
433
|
+
motion: 0
|
434
|
+
|
435
|
+
m: Swipe top left diagonal
|
436
|
+
t:
|
437
|
+
Swipe Screen
|
438
|
+
Top Left - Diagonal
|
439
|
+
a:
|
440
|
+
webhook
|
441
|
+
identifier: swipe
|
442
|
+
start: 0
|
443
|
+
motion: 1
|
269
444
|
|
445
|
+
m: Swipe top left down
|
446
|
+
t:
|
447
|
+
Swipe Screen
|
448
|
+
Top Left - Down
|
449
|
+
a:
|
450
|
+
webhook
|
451
|
+
identifier: swipe
|
452
|
+
start: 0
|
453
|
+
motion: 2
|
454
|
+
|
455
|
+
m: Swipe top right across
|
456
|
+
t:
|
457
|
+
Swipe Screen
|
458
|
+
Top Right - Across
|
459
|
+
a:
|
460
|
+
webhook
|
461
|
+
identifier: swipe
|
462
|
+
start: 1
|
463
|
+
motion: 0
|
464
|
+
|
465
|
+
|
466
|
+
m: Swipe top right diagonal
|
467
|
+
t:
|
468
|
+
Swipe Screen
|
469
|
+
Top Right - Diagonal
|
470
|
+
a:
|
471
|
+
webhook
|
472
|
+
identifier: swipe
|
473
|
+
start: 1
|
474
|
+
motion: 1
|
475
|
+
|
476
|
+
m: Swipe top right down
|
477
|
+
t:
|
478
|
+
Swipe Screen
|
479
|
+
Top Right - Down
|
480
|
+
a:
|
481
|
+
webhook
|
482
|
+
identifier: swipe
|
483
|
+
start: 1
|
484
|
+
motion: 2
|
485
|
+
|
486
|
+
m: flip from up to down
|
487
|
+
t: Flip Device Face Up -> Face Down
|
488
|
+
a:
|
489
|
+
webhook
|
490
|
+
identifier: flip_device
|
491
|
+
facedown: true
|
492
|
+
|
493
|
+
m: flip from down to up
|
494
|
+
t: Flip Device Face Down -> Face Up
|
495
|
+
a:
|
496
|
+
webhook
|
497
|
+
identifier: flip_device
|
498
|
+
facedown: false
|
499
|
+
EOF
|
500
|
+
s='
|
501
|
+
|
502
|
+
m: click text content
|
503
|
+
v: content
|
504
|
+
t: webhook
|
505
|
+
a:
|
506
|
+
UI Interaction
|
507
|
+
Click [[[lv=content]]]
|
508
|
+
'
|
270
509
|
|
271
510
|
module RemoteDroid
|
272
511
|
|
@@ -320,8 +559,19 @@ module RemoteDroid
|
|
320
559
|
|
321
560
|
context, json = msg.split(/:\s+/,2)
|
322
561
|
category, action = context.split('/',2)
|
323
|
-
|
324
|
-
|
562
|
+
|
563
|
+
h = JSON.parse(json, symbolize_names: true)
|
564
|
+
|
565
|
+
if action == 'force_macro_run' and h[:serverside] then
|
566
|
+
|
567
|
+
a = @remote.run_macro(h)
|
568
|
+
a.each {|msg| self.notice 'macrodroid/action: ' + msg }
|
569
|
+
|
570
|
+
else
|
571
|
+
|
572
|
+
@remote.control.method(action.to_sym).call(h)
|
573
|
+
|
574
|
+
end
|
325
575
|
|
326
576
|
end
|
327
577
|
|
data/lib/remotedroid/client.rb
CHANGED
@@ -3,8 +3,9 @@ module RemoteDroid
|
|
3
3
|
class Client
|
4
4
|
using ColouredText
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
@drb = OneDrb::Client.new host: host, port:
|
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,6 +46,10 @@ 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
|
|
45
55
|
def battery()
|
@@ -50,6 +60,14 @@ module RemoteDroid
|
|
50
60
|
query.cell_tower
|
51
61
|
end
|
52
62
|
|
63
|
+
def click(s)
|
64
|
+
control.click content: s
|
65
|
+
end
|
66
|
+
|
67
|
+
def control_media(option='Play/Pause')
|
68
|
+
control.control_media({option: option})
|
69
|
+
end
|
70
|
+
|
53
71
|
def disable(macro)
|
54
72
|
control.disable macro
|
55
73
|
end
|
@@ -57,11 +75,38 @@ module RemoteDroid
|
|
57
75
|
def enable(macro)
|
58
76
|
control.enable macro
|
59
77
|
end
|
78
|
+
|
79
|
+
def fill_clipboard(text)
|
80
|
+
control.fill_clipboard clipboard: text
|
81
|
+
end
|
82
|
+
|
83
|
+
alias copy fill_clipboard
|
60
84
|
|
61
85
|
def hotspot(state=nil)
|
62
86
|
control.hotspot state
|
87
|
+
end
|
88
|
+
|
89
|
+
def launch_activity(app='')
|
90
|
+
|
91
|
+
package = APPS[app]
|
92
|
+
|
93
|
+
if package then
|
94
|
+
control.launch_package package: package
|
95
|
+
else
|
96
|
+
r = APPS.find {|k,v| k =~ /#{app}/i}
|
97
|
+
control.launch_package(package: r[1]) if r
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
def launch_package(name='')
|
103
|
+
|
104
|
+
control.launch_package(package: name)
|
105
|
+
|
63
106
|
end
|
64
107
|
|
108
|
+
alias launch launch_activity
|
109
|
+
|
65
110
|
def location()
|
66
111
|
query.location
|
67
112
|
end
|
@@ -69,7 +114,6 @@ module RemoteDroid
|
|
69
114
|
def location_watch(refresh: '1 minute', interval: refresh,
|
70
115
|
duration: '30 minutes')
|
71
116
|
|
72
|
-
|
73
117
|
d = ChronicDuration.parse(duration)
|
74
118
|
seconds = ChronicDuration.parse(interval)
|
75
119
|
puts ("monitoring location every %s for %s" % [interval, duration]).info
|
@@ -89,10 +133,41 @@ module RemoteDroid
|
|
89
133
|
|
90
134
|
end
|
91
135
|
|
136
|
+
def open_website(url)
|
137
|
+
control.open_website url: url
|
138
|
+
end
|
139
|
+
|
140
|
+
alias goto open_website
|
141
|
+
alias visit open_website
|
142
|
+
|
143
|
+
def ip()
|
144
|
+
query.ip
|
145
|
+
end
|
146
|
+
|
147
|
+
def next()
|
148
|
+
control_media(option='Next')
|
149
|
+
end
|
150
|
+
|
151
|
+
def pause()
|
152
|
+
control_media(option='Pause')
|
153
|
+
end
|
154
|
+
|
155
|
+
def play()
|
156
|
+
control_media(option='Play')
|
157
|
+
end
|
158
|
+
|
159
|
+
def play_pause()
|
160
|
+
control_media(option='Play/Pause')
|
161
|
+
end
|
162
|
+
|
92
163
|
def photo()
|
93
164
|
take_picture
|
94
165
|
end
|
95
166
|
|
167
|
+
def previous()
|
168
|
+
control_media(option='Previous')
|
169
|
+
end
|
170
|
+
|
96
171
|
def say(text)
|
97
172
|
control.speak_text text
|
98
173
|
end
|
@@ -123,6 +198,10 @@ module RemoteDroid
|
|
123
198
|
control.stay_awake_off
|
124
199
|
end
|
125
200
|
|
201
|
+
def stop()
|
202
|
+
control_media(option='Stop')
|
203
|
+
end
|
204
|
+
|
126
205
|
def take_picture(ftp_src: nil, fileout: '.')
|
127
206
|
|
128
207
|
#screen.on
|
@@ -145,6 +224,26 @@ module RemoteDroid
|
|
145
224
|
|
146
225
|
alias take_photo take_picture
|
147
226
|
|
227
|
+
def take_screenshot(ftp_src: nil, fileout: '.')
|
228
|
+
|
229
|
+
#screen.on
|
230
|
+
r = query.take_screenshot
|
231
|
+
|
232
|
+
if ftp_src then
|
233
|
+
|
234
|
+
# give the device a second to write the image to file
|
235
|
+
sleep 1
|
236
|
+
|
237
|
+
credentials, dir = ftp_src.match(/(ftp:\/\/[^\/]+)\/([^$]+)/).captures
|
238
|
+
ftp = MyMediaFTP.new(credentials)
|
239
|
+
ftp.cd dir
|
240
|
+
filename = ftp.ls.sort_by {|x| x[:ctime]}.last[:name]
|
241
|
+
ftp.cp filename, fileout
|
242
|
+
|
243
|
+
end
|
244
|
+
|
245
|
+
end
|
246
|
+
|
148
247
|
def torch()
|
149
248
|
control.torch
|
150
249
|
end
|
data/lib/remotedroid/control.rb
CHANGED
@@ -16,14 +16,30 @@ module RemoteDroid
|
|
16
16
|
http_exec 'camera-flash-light', options
|
17
17
|
end
|
18
18
|
|
19
|
+
def click(options={content: ''})
|
20
|
+
http_exec 'click-text-content', options
|
21
|
+
end
|
22
|
+
|
23
|
+
def control_media(options={})
|
24
|
+
http_exec 'media-' + options[:option].downcase.gsub(/\W/,'-')
|
25
|
+
end
|
26
|
+
|
19
27
|
def disable(macro)
|
20
28
|
http_exec 'disable-macro', {name: macro}
|
21
29
|
end
|
22
30
|
|
23
31
|
def enable(macro)
|
24
32
|
http_exec 'enable-macro', {name: macro}
|
33
|
+
end
|
34
|
+
|
35
|
+
def fill_clipboard(options={})
|
36
|
+
http_exec 'fill-clipboard', options
|
25
37
|
end
|
26
38
|
|
39
|
+
def force_macro_run(options={})
|
40
|
+
http_exec option[:macro_name].downcase.gsub(/ /,'-')
|
41
|
+
end
|
42
|
+
|
27
43
|
def hotspot(state=nil)
|
28
44
|
|
29
45
|
if state then
|
@@ -65,10 +81,38 @@ module RemoteDroid
|
|
65
81
|
|
66
82
|
end
|
67
83
|
|
84
|
+
def launch_activity(options={app: ''})
|
85
|
+
|
86
|
+
return if options[:app].empty?
|
87
|
+
|
88
|
+
app = options[:app]
|
89
|
+
|
90
|
+
package = APPS[app]
|
91
|
+
|
92
|
+
if package then
|
93
|
+
launch_package package: package
|
94
|
+
else
|
95
|
+
r = APPS.find {|k,v| k =~ /#{app}/i}
|
96
|
+
launch_package(package: r[1]) if r
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
def launch_package(options={package: 'com.google.android.chrome'})
|
102
|
+
http_exec 'launch-by-package', options
|
103
|
+
end
|
104
|
+
|
68
105
|
def location(options={})
|
69
106
|
http_exec 'location'
|
70
107
|
end
|
71
108
|
|
109
|
+
def open_website(options={url: ''})
|
110
|
+
http_exec 'open-website', options
|
111
|
+
end
|
112
|
+
|
113
|
+
alias goto open_website
|
114
|
+
alias visit open_website
|
115
|
+
|
72
116
|
def say_current_time(options={})
|
73
117
|
http_exec 'say-current-time'
|
74
118
|
end
|
@@ -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
|
39
|
-
@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={
|
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
|
-
|
124
|
-
|
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
|
-
@
|
164
|
+
@syslog << [id, val]
|
165
|
+
@store[key] = val
|
166
|
+
|
147
167
|
end
|
148
168
|
|
149
169
|
end
|
data/lib/remotedroid/query.rb
CHANGED
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.
|
4
|
+
version: 0.5.5
|
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-
|
38
|
+
date: 2020-10-24 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: onedrb
|
metadata.gz.sig
CHANGED
Binary file
|