ruby-macrodroid 0.7.5 → 0.7.6
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/ruby-macrodroid.rb +209 -21
- 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: eb309319c4f87ebf642930e2a926a18292804c87a877724af262bcc1eecd8589
|
4
|
+
data.tar.gz: 697d9e182f7907219c005e5869b88a93d65c01a3bb3a5c1c2a5768d1da0a86cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d24dea588d1ddf7106f73ecc9a3593739df4ac6bd23f74601c33f7c183b929d243bbcb473175bccfb728df734a877aa1025676bd3ea972f024093ca310a4e9f
|
7
|
+
data.tar.gz: f7ff237c1a4d962d0579d996b80ce4513f0272430fb4b6cd0f095c24c9260113cfd7cebe117a22bc2c871b48f0c68f881174d2ccbf8f1decc615581dcbd5d5e8
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/ruby-macrodroid.rb
CHANGED
@@ -112,6 +112,7 @@ require 'rowx'
|
|
112
112
|
require 'uuid'
|
113
113
|
require 'glw'
|
114
114
|
require 'geozone'
|
115
|
+
require 'geocoder'
|
115
116
|
require 'subunit'
|
116
117
|
require 'rxfhelper'
|
117
118
|
require 'chronic_cron'
|
@@ -748,7 +749,13 @@ EOF
|
|
748
749
|
puts 'GeofenceTrigger found'.highlight if $debug
|
749
750
|
GeofenceTrigger.new(h, geofences: @geofences)
|
750
751
|
else
|
751
|
-
klass
|
752
|
+
puts 'before klass'
|
753
|
+
h2 = h.merge( macro: self)
|
754
|
+
puts 'h2: ' + h2.inspect
|
755
|
+
r = klass.new h2
|
756
|
+
|
757
|
+
r
|
758
|
+
|
752
759
|
end
|
753
760
|
|
754
761
|
end
|
@@ -918,13 +925,23 @@ class MacroDroid
|
|
918
925
|
name = e.text.to_s.strip
|
919
926
|
item = e.element('item')
|
920
927
|
coordinates = item.text('coordinates')
|
921
|
-
|
922
|
-
|
928
|
+
location = item.text('location')
|
929
|
+
|
930
|
+
if not coordinates and location then
|
931
|
+
results = Geocoder.search(location)
|
932
|
+
coordinates = results[0].coordinates.join(', ') if results.any?
|
933
|
+
end
|
934
|
+
|
935
|
+
if coordinates then
|
936
|
+
latitude, longitude = coordinates.split(/, */,2)
|
937
|
+
radius = item.text('radius')
|
938
|
+
end
|
923
939
|
|
924
940
|
id = UUID.new.generate
|
925
941
|
|
926
942
|
h = {
|
927
943
|
name: name,
|
944
|
+
location: location,
|
928
945
|
longitude: longitude,
|
929
946
|
latitude: latitude,
|
930
947
|
radius: radius,
|
@@ -1038,10 +1055,11 @@ class GeofenceMap
|
|
1038
1055
|
|
1039
1056
|
attr_accessor :name, :longitude, :latitude, :radius, :id
|
1040
1057
|
|
1041
|
-
def initialize(id: '', longitude: '', latitude: '', name: '', radius: ''
|
1058
|
+
def initialize(id: '', longitude: '', latitude: '', name: '', radius: '',
|
1059
|
+
location: nil)
|
1042
1060
|
|
1043
|
-
@id, @latitude, @longitude, @name, @radius = id, latitude, \
|
1044
|
-
longitude, name, radius
|
1061
|
+
@id, @latitude, @longitude, @name, @radius, @location = id, latitude, \
|
1062
|
+
longitude, name, radius, location
|
1045
1063
|
|
1046
1064
|
end
|
1047
1065
|
|
@@ -1059,8 +1077,13 @@ class GeofenceMap
|
|
1059
1077
|
|
1060
1078
|
def to_s()
|
1061
1079
|
|
1062
|
-
|
1063
|
-
|
1080
|
+
lines = []
|
1081
|
+
coordinates = "%s, %s" % [@latitude, @longitude]
|
1082
|
+
lines << "%s" % @name
|
1083
|
+
lines << " location: %s" % @location if @location
|
1084
|
+
lines << " coordinates: %s" % coordinates
|
1085
|
+
lines << " radius: %s" % @radius
|
1086
|
+
lines.join("\n")
|
1064
1087
|
|
1065
1088
|
end
|
1066
1089
|
|
@@ -1069,7 +1092,7 @@ end
|
|
1069
1092
|
class MacroObject
|
1070
1093
|
using ColouredText
|
1071
1094
|
|
1072
|
-
attr_reader :type
|
1095
|
+
attr_reader :type, :siguid
|
1073
1096
|
attr_accessor :options
|
1074
1097
|
|
1075
1098
|
def initialize(h={})
|
@@ -1105,6 +1128,10 @@ class MacroObject
|
|
1105
1128
|
|
1106
1129
|
end
|
1107
1130
|
|
1131
|
+
def siguid()
|
1132
|
+
@h[:siguid]
|
1133
|
+
end
|
1134
|
+
|
1108
1135
|
def to_s()
|
1109
1136
|
"#<%s %s>" % [self.class, @h.inspect]
|
1110
1137
|
end
|
@@ -1321,6 +1348,24 @@ class ExternalPowerTrigger < Trigger
|
|
1321
1348
|
super(options.merge h)
|
1322
1349
|
|
1323
1350
|
end
|
1351
|
+
|
1352
|
+
def to_s()
|
1353
|
+
|
1354
|
+
return 'Power Disconnected' unless @h[:power_connected]
|
1355
|
+
|
1356
|
+
status = 'Power Connectd'
|
1357
|
+
options = if @h[:power_connected_options].all? then
|
1358
|
+
'Any'
|
1359
|
+
else
|
1360
|
+
|
1361
|
+
a = ['Wired (Fast Charge)', 'Wireless', 'Wired (Slow Charge)']
|
1362
|
+
@h[:power_connected_options].map.with_index {|x,i| x ? i : nil}\
|
1363
|
+
.compact.map {|i| a[i] }.join(' + ')
|
1364
|
+
|
1365
|
+
end
|
1366
|
+
|
1367
|
+
"%s: %s" % [status, options]
|
1368
|
+
end
|
1324
1369
|
|
1325
1370
|
end
|
1326
1371
|
|
@@ -2097,7 +2142,7 @@ class GeofenceTrigger < Trigger
|
|
2097
2142
|
def initialize( h={}, geofences: {})
|
2098
2143
|
|
2099
2144
|
if h[:name] then
|
2100
|
-
puts ('geofences2: ' + geofences.inspect)
|
2145
|
+
puts ('geofences2: ' + geofences.inspect) if $debug
|
2101
2146
|
found = geofences.find {|x| x.name.downcase == h[:name].downcase}
|
2102
2147
|
h[:geofence_id] = found.id if found
|
2103
2148
|
|
@@ -2409,12 +2454,15 @@ class Action < MacroObject
|
|
2409
2454
|
|
2410
2455
|
attr_reader :constraints
|
2411
2456
|
|
2412
|
-
def initialize(h={})
|
2457
|
+
def initialize(h={})
|
2458
|
+
|
2459
|
+
macro = h[:macro]
|
2460
|
+
h.delete :macro
|
2413
2461
|
super(h)
|
2414
2462
|
|
2415
2463
|
# fetch the constraints
|
2416
2464
|
@constraints = @h[:constraint_list].map do |constraint|
|
2417
|
-
object(constraint.to_snake_case)
|
2465
|
+
object(constraint.to_snake_case.merge(macro: macro))
|
2418
2466
|
end
|
2419
2467
|
end
|
2420
2468
|
|
@@ -2593,22 +2641,23 @@ end
|
|
2593
2641
|
class IfConditionAction < Action
|
2594
2642
|
|
2595
2643
|
def initialize(h={})
|
2596
|
-
|
2644
|
+
|
2597
2645
|
options = {
|
2598
2646
|
a: true,
|
2599
2647
|
constraint_list: ''
|
2600
2648
|
}
|
2649
|
+
|
2650
|
+
macro = h[:macro]
|
2651
|
+
h2 = options.merge(filter(options,h).merge(macro: macro))
|
2601
2652
|
|
2602
|
-
super(
|
2653
|
+
super(h2)
|
2603
2654
|
|
2604
2655
|
end
|
2605
2656
|
|
2606
2657
|
def to_s()
|
2607
2658
|
|
2608
2659
|
operator = @h[:is_or_condition] ? 'OR' : 'AND'
|
2609
|
-
|
2610
|
-
puts 'if ... @h ' + @h.inspect
|
2611
|
-
r
|
2660
|
+
'If ' + @constraints.map(&:to_s).join(" %s " % operator)
|
2612
2661
|
|
2613
2662
|
end
|
2614
2663
|
end
|
@@ -2730,7 +2779,7 @@ class SetHotspotAction < ConnectivityAction
|
|
2730
2779
|
|
2731
2780
|
def to_s()
|
2732
2781
|
action = @h[:turn_wifi_on] ? 'Enable' : 'Disable'
|
2733
|
-
action + '
|
2782
|
+
action + ' HotSpot'
|
2734
2783
|
end
|
2735
2784
|
end
|
2736
2785
|
|
@@ -3992,7 +4041,11 @@ class SetVolumeAction < VolumeAction
|
|
3992
4041
|
super(options.merge h)
|
3993
4042
|
|
3994
4043
|
end
|
3995
|
-
|
4044
|
+
|
4045
|
+
def to_s()
|
4046
|
+
volume = @h[:stream_index_array].zip(@h[:stream_volume_array]).to_h[true]
|
4047
|
+
'Volume Change ' + "Notification = %s%%" % volume
|
4048
|
+
end
|
3996
4049
|
end
|
3997
4050
|
|
3998
4051
|
class Constraint < MacroObject
|
@@ -4620,18 +4673,26 @@ end
|
|
4620
4673
|
# Category: MacroDroid Specific
|
4621
4674
|
#
|
4622
4675
|
class TriggerThatInvokedConstraint < Constraint
|
4623
|
-
|
4676
|
+
using ColouredText
|
4677
|
+
|
4624
4678
|
def initialize(h={})
|
4625
4679
|
|
4680
|
+
puts ('h: ' + h.inspect).green
|
4681
|
+
@trigger = h[:macro].triggers.find {|x| x.siguid == h[:si_guid_that_invoked] }
|
4682
|
+
|
4626
4683
|
options = {
|
4627
4684
|
not: false,
|
4628
4685
|
si_guid_that_invoked: -4951291100076165433,
|
4629
4686
|
trigger_name: 'Shake Device'
|
4630
4687
|
}
|
4631
4688
|
|
4632
|
-
super(options.merge h)
|
4689
|
+
super(options.merge filter(options,h))
|
4633
4690
|
|
4634
4691
|
end
|
4692
|
+
|
4693
|
+
def to_s()
|
4694
|
+
'Trigger Fired: ' + @trigger.to_s
|
4695
|
+
end
|
4635
4696
|
|
4636
4697
|
end
|
4637
4698
|
|
@@ -4965,3 +5026,130 @@ class ProximitySensorConstraint < Constraint
|
|
4965
5026
|
end
|
4966
5027
|
|
4967
5028
|
end
|
5029
|
+
|
5030
|
+
|
5031
|
+
# ----------------------------------------------------------------------------
|
5032
|
+
|
5033
|
+
|
5034
|
+
class DroidSim
|
5035
|
+
|
5036
|
+
class Service
|
5037
|
+
def initialize(callback)
|
5038
|
+
@callback = callback
|
5039
|
+
end
|
5040
|
+
end
|
5041
|
+
|
5042
|
+
class Application < Service
|
5043
|
+
|
5044
|
+
def closed()
|
5045
|
+
end
|
5046
|
+
def launched()
|
5047
|
+
end
|
5048
|
+
end
|
5049
|
+
|
5050
|
+
class Battery < Service
|
5051
|
+
|
5052
|
+
def level()
|
5053
|
+
end
|
5054
|
+
|
5055
|
+
def temperature()
|
5056
|
+
end
|
5057
|
+
|
5058
|
+
end
|
5059
|
+
class Bluetooth < Service
|
5060
|
+
|
5061
|
+
def enable()
|
5062
|
+
@callback.on_bluetooth_enabled()
|
5063
|
+
end
|
5064
|
+
|
5065
|
+
#def enabled
|
5066
|
+
# @callback.on_bluetooth_enabled()
|
5067
|
+
#end
|
5068
|
+
|
5069
|
+
def enabled?
|
5070
|
+
end
|
5071
|
+
|
5072
|
+
def disabled
|
5073
|
+
end
|
5074
|
+
|
5075
|
+
def disabled?
|
5076
|
+
end
|
5077
|
+
end
|
5078
|
+
|
5079
|
+
class Calendar < Service
|
5080
|
+
def event(starts, ends)
|
5081
|
+
end
|
5082
|
+
end
|
5083
|
+
|
5084
|
+
class DayTime < Service
|
5085
|
+
|
5086
|
+
def initialie(s)
|
5087
|
+
end
|
5088
|
+
end
|
5089
|
+
|
5090
|
+
class Headphones < Service
|
5091
|
+
def inserted
|
5092
|
+
end
|
5093
|
+
|
5094
|
+
def removed
|
5095
|
+
end
|
5096
|
+
end
|
5097
|
+
|
5098
|
+
class Webhook < Service
|
5099
|
+
|
5100
|
+
def url()
|
5101
|
+
@url
|
5102
|
+
end
|
5103
|
+
|
5104
|
+
def url=(s)
|
5105
|
+
@url = s
|
5106
|
+
end
|
5107
|
+
end
|
5108
|
+
|
5109
|
+
class Wifi < Service
|
5110
|
+
def enabled
|
5111
|
+
end
|
5112
|
+
|
5113
|
+
def disabled
|
5114
|
+
end
|
5115
|
+
|
5116
|
+
def ssid_in_range()
|
5117
|
+
end
|
5118
|
+
|
5119
|
+
def ssid_out_of_range()
|
5120
|
+
end
|
5121
|
+
end
|
5122
|
+
|
5123
|
+
class Power < Service
|
5124
|
+
def connected()
|
5125
|
+
end
|
5126
|
+
|
5127
|
+
def disconnected()
|
5128
|
+
end
|
5129
|
+
|
5130
|
+
def button_toggle()
|
5131
|
+
end
|
5132
|
+
end
|
5133
|
+
|
5134
|
+
class Popup < Service
|
5135
|
+
def message(s)
|
5136
|
+
puts s
|
5137
|
+
end
|
5138
|
+
end
|
5139
|
+
|
5140
|
+
|
5141
|
+
attr_reader :bluetooth, :popup
|
5142
|
+
|
5143
|
+
def initialize()
|
5144
|
+
|
5145
|
+
@bluetooth = Bluetooth.new self
|
5146
|
+
@popup = Popup.new self
|
5147
|
+
|
5148
|
+
end
|
5149
|
+
|
5150
|
+
def on_bluetooth_enabled()
|
5151
|
+
|
5152
|
+
end
|
5153
|
+
|
5154
|
+
|
5155
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-macrodroid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
NZ2kdBIUDnAM24e0/wXdVxg4HnsZbdymxyzMQ4P5pKYcpI6oisBxI37p/Xy+wAg3
|
36
36
|
SBHno3GEuuD8ZWj24IMJpfbp
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2020-09-
|
38
|
+
date: 2020-09-11 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: glw
|
metadata.gz.sig
CHANGED
Binary file
|