remotedroid 0.6.2 → 0.6.3
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/remotedroid.rb +59 -11
- data/lib/remotedroid/client.rb +8 -5
- data/lib/remotedroid/control.rb +1 -1
- data/lib/remotedroid/controller.rb +42 -18
- data/lib/remotedroid/query.rb +6 -6
- 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: d8b216c60a929b3c6ece03a4b5979da738a0e3f7fb2994060a605391ab8068b9
|
4
|
+
data.tar.gz: d5bfed22b7fbc59767cc1a3af2597cc95b05ddbf8aca80420305a6bdbc12960c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fb42e16c68052d50a4ac532a88997fd723178142951dfb4aaaf2da6458128ff7fedea58d56b20020dac6b631f8a439371e4ac231b43ba9dd61db96aef1dd9f0
|
7
|
+
data.tar.gz: 763dc18a3b896bb77b53d1dddf70e4b839a314301e00642e96c326b36f0cdf2d7beed025df3a7232f6879fd097f715ff813fac62913a7988a57d5deec1543b8f
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/remotedroid.rb
CHANGED
@@ -571,10 +571,10 @@ module RemoteDroid
|
|
571
571
|
|
572
572
|
class Server
|
573
573
|
|
574
|
-
def initialize(s, drb_host: '127.0.0.1',
|
574
|
+
def initialize(s, drb_host: '127.0.0.1', devices: nil, debug: false)
|
575
575
|
|
576
576
|
md = MacroDroid.new(s)
|
577
|
-
rdc = RemoteDroid::Controller.new(md,
|
577
|
+
rdc = RemoteDroid::Controller.new(md, devices: devices, debug: debug)
|
578
578
|
@drb = OneDrb::Server.new host: drb_host, port: '5777', obj: rdc
|
579
579
|
|
580
580
|
end
|
@@ -586,20 +586,25 @@ module RemoteDroid
|
|
586
586
|
end
|
587
587
|
|
588
588
|
class TriggerSubscriber < SPSSub
|
589
|
+
using ColouredText
|
589
590
|
|
590
591
|
def initialize(host: 'sps.home', drb_host: '127.0.0.1')
|
591
592
|
@remote = OneDrb::Client.new host: drb_host, port: '5777'
|
592
593
|
super(host: host)
|
594
|
+
puts 'TriggerSubscriber'.highlight
|
593
595
|
end
|
594
596
|
|
595
|
-
def subscribe(topic: 'macrodroid
|
597
|
+
def subscribe(topic: 'macrodroid/#/trigger')
|
596
598
|
|
597
|
-
super(topic: topic) do |msg|
|
599
|
+
super(topic: topic) do |msg, topic|
|
598
600
|
|
601
|
+
dev_id = topic.split('/')[1]
|
599
602
|
trigger, json = msg.split(/:\s+/,2)
|
603
|
+
|
600
604
|
a = @remote.trigger_fired trigger.to_sym,
|
601
605
|
JSON.parse(json, symbolize_names: true)
|
602
|
-
|
606
|
+
|
607
|
+
a.each {|msg| self.notice "macrodroid/%s/action: %s" % [dev_id, msg] }
|
603
608
|
|
604
609
|
end
|
605
610
|
end
|
@@ -607,13 +612,15 @@ module RemoteDroid
|
|
607
612
|
end
|
608
613
|
|
609
614
|
class ActionSubscriber < SPSSub
|
615
|
+
using ColouredText
|
610
616
|
|
611
617
|
def initialize(host: 'sps.home', drb_host: '127.0.0.1')
|
612
618
|
@remote = OneDrb::Client.new host: drb_host, port: '5777'
|
613
619
|
super(host: host)
|
620
|
+
puts 'ActionSubscriber'.highlight
|
614
621
|
end
|
615
622
|
|
616
|
-
def subscribe(topic: 'macrodroid
|
623
|
+
def subscribe(topic: 'macrodroid/#/action')
|
617
624
|
|
618
625
|
super(topic: topic) do |msg|
|
619
626
|
|
@@ -622,10 +629,21 @@ module RemoteDroid
|
|
622
629
|
|
623
630
|
h = JSON.parse(json, symbolize_names: true)
|
624
631
|
|
625
|
-
if
|
632
|
+
if h[:serverside]then
|
626
633
|
|
627
|
-
|
628
|
-
|
634
|
+
if action == 'force_macro_run' then
|
635
|
+
|
636
|
+
a = @remote.run_macro(h)
|
637
|
+
a.each {|msg| self.notice 'macrodroid/action: ' + msg }
|
638
|
+
|
639
|
+
else
|
640
|
+
|
641
|
+
puts 'action: ' + action.inspect
|
642
|
+
puts 'h: ' + h.inspect
|
643
|
+
r = @remote.local(action.to_sym, h)
|
644
|
+
puts 'r: ' + r.inspect
|
645
|
+
|
646
|
+
end
|
629
647
|
|
630
648
|
else
|
631
649
|
|
@@ -640,27 +658,57 @@ module RemoteDroid
|
|
640
658
|
end
|
641
659
|
|
642
660
|
class ResponseSubscriber < SPSSub
|
661
|
+
using ColouredText
|
643
662
|
|
644
663
|
def initialize(host: 'sps.home', drb_host: '127.0.0.1')
|
645
664
|
@remote = OneDrb::Client.new host: drb_host, port: '5777'
|
646
665
|
super(host: host)
|
666
|
+
puts 'ResponseSubscriber'.highlight
|
647
667
|
end
|
648
668
|
|
649
|
-
def subscribe(topic: 'macrodroid
|
669
|
+
def subscribe(topic: 'macrodroid/#/response')
|
650
670
|
|
651
671
|
super(topic: topic) do |msg|
|
652
672
|
|
673
|
+
#puts 'msg: ' + msg.inspect
|
653
674
|
json, id = msg.split(/:\s+/,2).reverse
|
654
675
|
|
655
676
|
h = JSON.parse(json, symbolize_names: true)
|
656
677
|
id ||= h.keys.first
|
678
|
+
#puts '->' + [id, h].inspect
|
657
679
|
@remote.update id.to_sym, h
|
658
680
|
|
659
681
|
end
|
660
682
|
|
661
683
|
end
|
662
684
|
|
663
|
-
end
|
685
|
+
end
|
686
|
+
|
687
|
+
|
688
|
+
class Clients
|
689
|
+
using ColouredText
|
690
|
+
|
691
|
+
attr_reader :devices
|
692
|
+
|
693
|
+
def initialize(hostx='127.0.0.1', host: hostx, port: '5777',
|
694
|
+
sps_host: 'sps.home', sps_port: '59000')
|
695
|
+
|
696
|
+
@drb = OneDrb::Client.new host: host, port: port
|
697
|
+
#sleep 3
|
698
|
+
@devices = @drb.devices.keys.inject({}) do |r, name|
|
699
|
+
obj = RemoteDroid::Client.new(host: host, port: port,
|
700
|
+
sps_host: sps_host, sps_port: sps_port, device: name)
|
701
|
+
r.merge!(name => obj)
|
702
|
+
end
|
703
|
+
|
704
|
+
end
|
705
|
+
|
706
|
+
def device(name)
|
707
|
+
idx = @devices.index name.to_sym
|
708
|
+
@devices[idx] if idx
|
709
|
+
end
|
710
|
+
|
711
|
+
end
|
664
712
|
end
|
665
713
|
|
666
714
|
# PASTE_END
|
data/lib/remotedroid/client.rb
CHANGED
@@ -4,15 +4,18 @@ module RemoteDroid
|
|
4
4
|
using ColouredText
|
5
5
|
|
6
6
|
def initialize(hostx='127.0.0.1', host: hostx, port: '5777',
|
7
|
-
sps_host: 'sps.home', sps_port: '59000')
|
7
|
+
sps_host: 'sps.home', sps_port: '59000', device: nil)
|
8
8
|
|
9
|
+
raise 'supply a device name' unless device
|
10
|
+
|
11
|
+
@device = device
|
9
12
|
@drb = OneDrb::Client.new host: host, port: port
|
10
13
|
@sps = SPSPub.new host: sps_host, port: sps_port
|
11
14
|
|
12
15
|
end
|
13
16
|
|
14
17
|
def control
|
15
|
-
@drb.control
|
18
|
+
@drb.control @device
|
16
19
|
end
|
17
20
|
|
18
21
|
def export(s)
|
@@ -20,7 +23,7 @@ module RemoteDroid
|
|
20
23
|
end
|
21
24
|
|
22
25
|
def invoke(s, *args)
|
23
|
-
@drb.invoke(s, *args)
|
26
|
+
@drb.invoke(@device, s, *args)
|
24
27
|
end
|
25
28
|
|
26
29
|
def macros()
|
@@ -29,9 +32,9 @@ module RemoteDroid
|
|
29
32
|
|
30
33
|
def query(id=nil)
|
31
34
|
|
32
|
-
return @drb.query unless id
|
35
|
+
return @drb.query(@device) unless id
|
33
36
|
t = Time.now
|
34
|
-
h = @drb.query(id)
|
37
|
+
h = @drb.query(@device, id)
|
35
38
|
h.merge({latency: (Time.now - t).round(3)})
|
36
39
|
|
37
40
|
end
|
data/lib/remotedroid/control.rb
CHANGED
@@ -2,15 +2,20 @@ module RemoteDroid
|
|
2
2
|
|
3
3
|
class Controller
|
4
4
|
|
5
|
-
attr_reader :model, :
|
5
|
+
attr_reader :model, :syslog, :devices
|
6
6
|
attr_accessor :title, :macros, :store
|
7
7
|
|
8
|
-
def initialize(mcs, model=MODEL,
|
8
|
+
def initialize(mcs, model=MODEL, devices: {}, debug: false)
|
9
9
|
|
10
10
|
@debug = debug
|
11
11
|
@syslog = []
|
12
|
-
|
13
|
-
@
|
12
|
+
|
13
|
+
@devices = devices
|
14
|
+
|
15
|
+
@devices.each do |key, deviceid|
|
16
|
+
devices[key] = Control.new(deviceid)
|
17
|
+
end
|
18
|
+
|
14
19
|
@macros = mcs.macros
|
15
20
|
|
16
21
|
if model then
|
@@ -18,7 +23,7 @@ module RemoteDroid
|
|
18
23
|
end
|
19
24
|
|
20
25
|
@store = {}
|
21
|
-
|
26
|
+
#@query = Query.new(self)
|
22
27
|
|
23
28
|
# enable the required triggers on the Android device
|
24
29
|
#
|
@@ -35,6 +40,10 @@ module RemoteDroid
|
|
35
40
|
=end
|
36
41
|
end
|
37
42
|
|
43
|
+
def control(device)
|
44
|
+
@devices[device]
|
45
|
+
end
|
46
|
+
|
38
47
|
def delete_all()
|
39
48
|
@macros = []
|
40
49
|
end
|
@@ -46,12 +55,20 @@ module RemoteDroid
|
|
46
55
|
|
47
56
|
end
|
48
57
|
|
49
|
-
def invoke(name, options={})
|
58
|
+
def invoke(device, name, options={})
|
50
59
|
|
51
|
-
if
|
52
|
-
|
60
|
+
if control(device).respond_to? name.to_sym then
|
61
|
+
control(device).method(name.to_sym).call(options)
|
53
62
|
else
|
54
|
-
|
63
|
+
control(device).http_exec name.to_sym, options
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def local(action, options={})
|
68
|
+
|
69
|
+
case action.to_sym
|
70
|
+
when :open_web_page
|
71
|
+
open(options[:url_to_open]).read
|
55
72
|
end
|
56
73
|
end
|
57
74
|
|
@@ -63,9 +80,9 @@ module RemoteDroid
|
|
63
80
|
@model.op
|
64
81
|
end
|
65
82
|
|
66
|
-
def query(id=nil)
|
83
|
+
def query(device, id=nil)
|
67
84
|
|
68
|
-
return
|
85
|
+
return Query.new(device, self) unless id
|
69
86
|
|
70
87
|
@store[id] = nil
|
71
88
|
|
@@ -79,20 +96,22 @@ module RemoteDroid
|
|
79
96
|
|
80
97
|
# send http request via macrodroid.com API
|
81
98
|
|
82
|
-
if id.downcase.to_sym == :location then
|
83
|
-
|
99
|
+
identifier, options = if id.downcase.to_sym == :location then
|
100
|
+
id
|
84
101
|
elsif sys.include? id
|
85
|
-
|
102
|
+
[:'query-setting-system', {qvar: id}]
|
86
103
|
elsif global.include? id
|
87
|
-
|
104
|
+
[:'query-setting-global', {qvar: id}]
|
88
105
|
elsif secure.include? id
|
89
|
-
|
106
|
+
[:'query-setting-secure', {qvar: id}]
|
90
107
|
elsif id.downcase.to_sym == :'take-picture'
|
91
|
-
|
108
|
+
id
|
92
109
|
else
|
93
|
-
|
110
|
+
[:query, {qvar: id}]
|
94
111
|
end
|
95
112
|
|
113
|
+
control(device).http_exec identifier, options
|
114
|
+
|
96
115
|
# wait for the local variable to be updated
|
97
116
|
# timeout after 5 seoncds
|
98
117
|
t = Time.now
|
@@ -155,6 +174,11 @@ module RemoteDroid
|
|
155
174
|
|
156
175
|
def update(id, val)
|
157
176
|
|
177
|
+
if @debug then
|
178
|
+
puts 'inside update'
|
179
|
+
puts [id, val].inspect
|
180
|
+
end
|
181
|
+
|
158
182
|
key = if %i(location take-picture).include? id
|
159
183
|
id
|
160
184
|
else
|
data/lib/remotedroid/query.rb
CHANGED
@@ -4,8 +4,8 @@ module RemoteDroid
|
|
4
4
|
|
5
5
|
attr_accessor :locations
|
6
6
|
|
7
|
-
def initialize(callback)
|
8
|
-
@callback = callback
|
7
|
+
def initialize(device, callback)
|
8
|
+
@device, @callback = device, callback
|
9
9
|
@locations = []
|
10
10
|
end
|
11
11
|
|
@@ -45,7 +45,7 @@ module RemoteDroid
|
|
45
45
|
|
46
46
|
def location()
|
47
47
|
|
48
|
-
r = @callback.query(:location)
|
48
|
+
r = @callback.query(@device, :location)
|
49
49
|
return r if r.nil? or r.empty? or r[:coords].nil?
|
50
50
|
|
51
51
|
r[:coords] = r[:coords].split(',')
|
@@ -62,11 +62,11 @@ module RemoteDroid
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def take_picture()
|
65
|
-
@callback.query(:'take-picture')
|
65
|
+
@callback.query(@device, :'take-picture')
|
66
66
|
end
|
67
67
|
|
68
68
|
def take_screenshot()
|
69
|
-
@callback.query(:'take-screenshot')
|
69
|
+
@callback.query(@device, :'take-screenshot')
|
70
70
|
end
|
71
71
|
|
72
72
|
def volume(context=nil)
|
@@ -93,7 +93,7 @@ module RemoteDroid
|
|
93
93
|
private
|
94
94
|
|
95
95
|
def q(id)
|
96
|
-
@callback.query(id)[id]
|
96
|
+
@callback.query(@device, id)[id]
|
97
97
|
end
|
98
98
|
|
99
99
|
end
|
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.6.
|
4
|
+
version: 0.6.3
|
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-
|
38
|
+
date: 2020-11-01 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: onedrb
|
metadata.gz.sig
CHANGED
Binary file
|