spstrigger_execute 0.4.10 → 0.5.2
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/lib/spstrigger_execute.rb +78 -69
- data.tar.gz.sig +0 -0
- metadata +40 -37
- 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: c9e2623d7c28470a080c0db5ae3b4e56bcb022875ef6a17f95a2d20aee88f97e
|
|
4
|
+
data.tar.gz: 6314c39efb6225437e01a21c6b29111c5b644b8258474a4f91795850960ee13a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 962243ccdd8f1a0e79b9979ee72b319a020931121d98b7bcaa5485915ecc030f3591b4df17dfbd9f5ec077b4cc574949c6890408b36d06e2e0a2940e7d9b4824
|
|
7
|
+
data.tar.gz: 9af7e7cf7ddca7a312db7e5014b2e85b9face23a1d0564f8ef336d4f0c29d09f70ed47caf4371892fe9106228a46a85a8c7f2b026ce8602077f3569c271393a2
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/lib/spstrigger_execute.rb
CHANGED
|
@@ -5,51 +5,51 @@
|
|
|
5
5
|
require 'dynarex'
|
|
6
6
|
require 'chronic_between'
|
|
7
7
|
require 'xmlregistry_objects'
|
|
8
|
+
require 'rxfreader'
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class SPSTriggerExecute
|
|
11
12
|
|
|
12
13
|
def initialize(x, reg=nil, polyrexdoc=nil, rws=nil, log: nil)
|
|
13
|
-
|
|
14
|
+
|
|
14
15
|
log.info 'SPSTriggerExecute/initialize: active' if log
|
|
15
|
-
|
|
16
|
+
|
|
16
17
|
@rws, @log = rws, log
|
|
17
|
-
|
|
18
|
+
|
|
18
19
|
@patterns = if x.is_a? Dynarex then
|
|
19
|
-
|
|
20
|
+
|
|
20
21
|
x.to_h
|
|
21
|
-
|
|
22
|
+
|
|
22
23
|
elsif x.is_a? Array
|
|
23
24
|
x
|
|
24
25
|
else
|
|
25
|
-
|
|
26
|
-
buffer, _ =
|
|
26
|
+
|
|
27
|
+
buffer, _ = RXFReader.read x
|
|
27
28
|
dx = buffer[/^<\?dynarex /] ? Dynarex.new.import(buffer) : \
|
|
28
29
|
Dynarex.new(buffer)
|
|
29
30
|
dx.to_a
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
35
34
|
if reg and polyrexdoc then
|
|
36
|
-
log.info 'SPSTriggerExecute/initialize: before reg' if log
|
|
35
|
+
log.info 'SPSTriggerExecute/initialize: before reg' if log
|
|
37
36
|
puts 'reg: ' + reg.inspect
|
|
38
37
|
xro = XMLRegistryObjects.new(reg, polyrexdoc, log: log)
|
|
39
|
-
log.info 'SPSTriggerExecute/initialize: after reg' if log
|
|
40
|
-
@h = xro.to_h
|
|
41
|
-
define_methods = @h.keys.map {|x| "def #{x}() @h[:#{x}] end"}
|
|
42
|
-
instance_eval define_methods.join("\n")
|
|
43
|
-
|
|
38
|
+
log.info 'SPSTriggerExecute/initialize: after reg' if log
|
|
39
|
+
@h = xro.to_h
|
|
40
|
+
define_methods = @h.keys.map {|x| "def #{x}() @h[:#{x}] end"}
|
|
41
|
+
instance_eval define_methods.join("\n")
|
|
42
|
+
|
|
44
43
|
if log then
|
|
45
|
-
log.info 'SPSTriggerExecute/initialize: define_methods : ' +
|
|
44
|
+
log.info 'SPSTriggerExecute/initialize: define_methods : ' +
|
|
46
45
|
self.public_methods.sort.inspect
|
|
47
46
|
end
|
|
48
47
|
end
|
|
49
48
|
|
|
50
49
|
end
|
|
51
50
|
|
|
52
|
-
def match_and_execute(
|
|
51
|
+
def match_and_execute(topicx=nil, messagex=nil, topic: topicx,
|
|
52
|
+
message: messagex)
|
|
53
53
|
|
|
54
54
|
@log.info 'SPSTriggerExecute/match_and_execute: active' if @log
|
|
55
55
|
results = find_match topic, message
|
|
@@ -57,31 +57,31 @@ class SPSTriggerExecute
|
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
alias mae match_and_execute
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
def run(s)
|
|
62
62
|
instance_eval s
|
|
63
63
|
end
|
|
64
|
-
|
|
64
|
+
|
|
65
65
|
|
|
66
66
|
private
|
|
67
67
|
|
|
68
68
|
def find_match(topicx=nil, message)
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
|
|
70
|
+
|
|
71
71
|
@patterns.map.with_index.inject([]) do |r, row|
|
|
72
72
|
|
|
73
73
|
h, i = row
|
|
74
74
|
|
|
75
75
|
topic, msg, conditions, job = \
|
|
76
76
|
%i(topic msg conditions job).map {|x| h[x].to_s }
|
|
77
|
-
|
|
77
|
+
|
|
78
78
|
index ||= i + 1
|
|
79
|
-
|
|
79
|
+
|
|
80
80
|
# note: the index is only present if there is a duplicate
|
|
81
81
|
# Dynarex record default key
|
|
82
82
|
|
|
83
83
|
t, m = topic.length > 0, msg.length > 0
|
|
84
|
-
|
|
84
|
+
|
|
85
85
|
result = if topicx && t && m then
|
|
86
86
|
|
|
87
87
|
r1 = topicx.match(/#{topic}/)
|
|
@@ -96,89 +96,98 @@ class SPSTriggerExecute
|
|
|
96
96
|
|
|
97
97
|
elsif m then
|
|
98
98
|
|
|
99
|
-
r2 = message.match(/#{msg}/)
|
|
99
|
+
r2 = message.match(/#{msg}/)
|
|
100
100
|
{msg: r2, index: index} if r2
|
|
101
101
|
else
|
|
102
102
|
{}
|
|
103
|
-
end
|
|
103
|
+
end
|
|
104
104
|
|
|
105
105
|
if result and conditions.length > 0 then
|
|
106
|
-
|
|
106
|
+
|
|
107
107
|
if @log then
|
|
108
|
-
@log.info 'SPSTriggerExecute/find_match: conditions: ' +
|
|
108
|
+
@log.info 'SPSTriggerExecute/find_match: conditions: ' +
|
|
109
109
|
conditions.inspect
|
|
110
110
|
end
|
|
111
111
|
|
|
112
112
|
named_match = message.match(/#{msg}/)
|
|
113
|
-
|
|
113
|
+
|
|
114
114
|
variable_assignment = if named_match then
|
|
115
|
-
|
|
115
|
+
|
|
116
116
|
named_match.names.inject('') do |rs, name|
|
|
117
117
|
|
|
118
118
|
m = msg =~ /\?<#{name}\>\\d+/ ? 'to_i' : 'to_s'
|
|
119
|
-
rs << "#{name} = named_match[:#{name}].#{m}\n"
|
|
119
|
+
rs << "#{name} = named_match[:#{name}].#{m}\n"
|
|
120
120
|
end
|
|
121
|
-
|
|
122
|
-
else ''
|
|
121
|
+
|
|
122
|
+
else ''
|
|
123
123
|
end
|
|
124
124
|
|
|
125
125
|
|
|
126
126
|
success = eval (variable_assignment + conditions)
|
|
127
127
|
|
|
128
128
|
if @log then
|
|
129
|
-
@log.info 'SPSTriggerExecute/find_match: success : ' +
|
|
129
|
+
@log.info 'SPSTriggerExecute/find_match: success : ' +
|
|
130
130
|
success.inspect
|
|
131
131
|
end
|
|
132
|
-
|
|
132
|
+
|
|
133
133
|
result = nil unless success
|
|
134
134
|
end
|
|
135
135
|
|
|
136
136
|
result ? r << result : r
|
|
137
|
-
|
|
137
|
+
|
|
138
138
|
end
|
|
139
139
|
end
|
|
140
140
|
|
|
141
|
-
|
|
141
|
+
|
|
142
142
|
# not yet implemented
|
|
143
|
-
=begin
|
|
143
|
+
=begin
|
|
144
144
|
def method_missing(method_name, *args)
|
|
145
145
|
|
|
146
146
|
job = args.shift
|
|
147
147
|
# Rsc object call goes here
|
|
148
148
|
@log.debug 'package: ' + package.inspect
|
|
149
149
|
@rws.run_job package=method_name, job, {}, args
|
|
150
|
-
end
|
|
151
|
-
=end
|
|
152
|
-
|
|
150
|
+
end
|
|
151
|
+
=end
|
|
152
|
+
|
|
153
153
|
def prepare_jobs(results)
|
|
154
|
-
|
|
154
|
+
|
|
155
155
|
@log.info 'SPSTriggerExecute/prepare_jobs: active' if @log
|
|
156
156
|
|
|
157
157
|
results.inject([]) do |r,h|
|
|
158
|
-
|
|
158
|
+
|
|
159
159
|
if @log then
|
|
160
|
-
@log.info 'SPSTriggerExecute/prepare_jobs: inside inject h: ' +
|
|
161
|
-
h.inspect
|
|
160
|
+
@log.info 'SPSTriggerExecute/prepare_jobs: inside inject h: ' +
|
|
161
|
+
h.inspect
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
a = []
|
|
165
165
|
a += h[:topic].captures if h[:topic] && h[:topic].captures.any?
|
|
166
166
|
a += h[:msg].captures if h[:msg]
|
|
167
|
-
|
|
167
|
+
|
|
168
|
+
params = {}
|
|
169
|
+
params.merge!(h[:topic].named_captures) if h[:topic]
|
|
170
|
+
params.merge!(h[:msg].named_captures) if h[:msg]
|
|
171
|
+
|
|
168
172
|
jobs = @patterns[h[:index].to_i - 1][:job]
|
|
169
|
-
|
|
170
|
-
|
|
173
|
+
|
|
174
|
+
|
|
171
175
|
jobs.split(/\s*;\s*/).each do |job|
|
|
172
176
|
|
|
173
177
|
job_args = job.split + a
|
|
174
|
-
|
|
178
|
+
|
|
175
179
|
if job[/^\/\//] then
|
|
176
180
|
|
|
177
|
-
r << [:rse, job_args]
|
|
178
|
-
|
|
181
|
+
r << [:rse, job_args, params]
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
elsif job[/^rse:\/\//]
|
|
185
|
+
|
|
186
|
+
r << [:rse_uri, job]
|
|
187
|
+
|
|
179
188
|
elsif job[/^[$\w\/]+:/]
|
|
180
189
|
|
|
181
|
-
topic_message = job.gsub(/\$\d/) do |x|
|
|
190
|
+
topic_message = job.gsub(/\$\d/) do |x|
|
|
182
191
|
|
|
183
192
|
i = x[/\d$/].to_i - 1
|
|
184
193
|
x.sub(/\$\d/, a[i].to_s)
|
|
@@ -186,33 +195,33 @@ class SPSTriggerExecute
|
|
|
186
195
|
|
|
187
196
|
topic_message = topic_message\
|
|
188
197
|
.gsub(/![Tt]ime/,Time.now.strftime("%a %H:%M%P"))\
|
|
189
|
-
.gsub(/![Dd]ate/,Time.now.strftime("%d %b"))
|
|
198
|
+
.gsub(/![Dd]ate/,Time.now.strftime("%d %b"))
|
|
199
|
+
|
|
190
200
|
|
|
191
|
-
|
|
192
|
-
r << [:sps, topic_message]
|
|
201
|
+
r << [:sps, topic_message]
|
|
193
202
|
else
|
|
194
|
-
|
|
195
|
-
statement = job.gsub(/\$\d/) do |x|
|
|
203
|
+
|
|
204
|
+
statement = job.gsub(/\$\d/) do |x|
|
|
196
205
|
i = x[/\d$/].to_i - 1
|
|
197
206
|
x.sub(/\$\d/, a[i].to_s)
|
|
198
207
|
end
|
|
199
|
-
|
|
208
|
+
|
|
200
209
|
r << [:ste, statement]
|
|
201
|
-
|
|
210
|
+
|
|
202
211
|
end
|
|
203
212
|
end
|
|
204
|
-
|
|
213
|
+
|
|
205
214
|
@log.info 'SPSTriggerExecute/prepare_jobs: result: ' if @log
|
|
206
|
-
|
|
207
|
-
r
|
|
208
|
-
|
|
215
|
+
|
|
216
|
+
r
|
|
217
|
+
|
|
209
218
|
end
|
|
210
219
|
end
|
|
211
220
|
|
|
212
221
|
def time()
|
|
213
222
|
|
|
214
223
|
t = Time.now
|
|
215
|
-
|
|
224
|
+
|
|
216
225
|
def t.within?(times)
|
|
217
226
|
ChronicBetween.new(times).within? Time.now
|
|
218
227
|
end
|
|
@@ -223,9 +232,9 @@ class SPSTriggerExecute
|
|
|
223
232
|
|
|
224
233
|
def t.<(x)
|
|
225
234
|
x.is_a?(String) ? self < Chronic.parse(x) : super(x)
|
|
226
|
-
end
|
|
235
|
+
end
|
|
227
236
|
|
|
228
237
|
t
|
|
229
238
|
end
|
|
230
|
-
|
|
239
|
+
|
|
231
240
|
end
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spstrigger_execute
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- James Robertson
|
|
@@ -10,28 +10,32 @@ bindir: bin
|
|
|
10
10
|
cert_chain:
|
|
11
11
|
- |
|
|
12
12
|
-----BEGIN CERTIFICATE-----
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMjIzMTA0NzE1WhcN
|
|
15
|
+
MjMwMjIzMTA0NzE1WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC+4XPH
|
|
17
|
+
9FRtD3RhUUJIPj2LpnAkre+W29nVImFxhnZKerccXsJUOkLpaN66NPsRAUzmCSo/
|
|
18
|
+
raGXDb86cFOTww3+IBacxmHyJPYf52YcHAr8l+TmWa405LKtNtTzYEy8T4x1pklI
|
|
19
|
+
tJtTZz42KfdoWJEeYYWSxBhzT7Rq8k3xuy48sze+epy2o6muxuC1xfYJRL5LhKau
|
|
20
|
+
v76h/2UL4HusFaPuFL/oIJfhi2wAYB5naUwtgFJ2BUaro3M9//ZK7D9jtbNDVXVX
|
|
21
|
+
WMHFZL1doect1DjMvDAsOJs+322893NMArQAoBgsYNTZ24OmoSxBLI2PgVJCzZYx
|
|
22
|
+
1oJ1for6Tg4xauyJ4XivHpA9OeozL7WQeAxcbOSbQyJ3fFC/Qf7VD/JsxZgJYLzA
|
|
23
|
+
GJf0v/3Q2I+M7k7MIvMb4Nm8y/h6Ue8TeIZ5TUYgW+DyheVugcCsMGgKEIoIaQNp
|
|
24
|
+
+/ycgf4pDZWNXo7g8j07izQjAntx7puC5eOEsXPHp50IsAR3J3fY9gp3bBsCAwEA
|
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU5XsTfIel
|
|
26
|
+
Geu3LvSXZ5DRdspxp+QwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEABQ3TeaY6kPDrK31jM+beTnexZ0GRXnHk8d2w05Lk
|
|
29
|
+
Dtus0Ll6kdJANnG3w+DA8/4/NbyZykCHJ0IFRNJxQk1K/A2l2Ejp56x/byB77bUS
|
|
30
|
+
MtiTlPceZMzofC6P0Jw4YmATkitddFSDzbWk7SJBzh7ES1ZU7akiMxg5a1zgVdMi
|
|
31
|
+
3qJC24Kepyrrdjw/LNbwQStp+Wi0vn0SLtlGcwEUK+GX9sgnlFM7DACmFLa+Q07v
|
|
32
|
+
VMMWMT++elvuzJWh8nzyoC61wFHNv7VuFS3JLS628/fvcaJSv/14kCVxXNvXnB+0
|
|
33
|
+
pXBBvWBPrM0AbZd/BcMhjQOU4gFBwTZYQPNTIYuxY5+qeSklhlHOxxqjLZ80FNIW
|
|
34
|
+
mwE7uxev8HERyFxkyylLiD9Rn0BbWPdpvxdMR/ERf/KjoRJt+YHtqRcfHlDI7WYd
|
|
35
|
+
kcanouQmEubFZ26md+j9mhOx9r117kQmXW19FYMG7BO9KiM1WxGVGt02zAF1OLwF
|
|
36
|
+
yBsqw3zhA/dhp5I6skt1EWsm
|
|
33
37
|
-----END CERTIFICATE-----
|
|
34
|
-
date:
|
|
38
|
+
date: 2022-02-23 00:00:00.000000000 Z
|
|
35
39
|
dependencies:
|
|
36
40
|
- !ruby/object:Gem::Dependency
|
|
37
41
|
name: dynarex
|
|
@@ -39,62 +43,62 @@ dependencies:
|
|
|
39
43
|
requirements:
|
|
40
44
|
- - "~>"
|
|
41
45
|
- !ruby/object:Gem::Version
|
|
42
|
-
version: '1.
|
|
46
|
+
version: '1.9'
|
|
43
47
|
- - ">="
|
|
44
48
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 1.
|
|
49
|
+
version: 1.9.6
|
|
46
50
|
type: :runtime
|
|
47
51
|
prerelease: false
|
|
48
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
49
53
|
requirements:
|
|
50
54
|
- - "~>"
|
|
51
55
|
- !ruby/object:Gem::Version
|
|
52
|
-
version: '1.
|
|
56
|
+
version: '1.9'
|
|
53
57
|
- - ">="
|
|
54
58
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: 1.
|
|
59
|
+
version: 1.9.6
|
|
56
60
|
- !ruby/object:Gem::Dependency
|
|
57
61
|
name: chronic_between
|
|
58
62
|
requirement: !ruby/object:Gem::Requirement
|
|
59
63
|
requirements:
|
|
60
64
|
- - "~>"
|
|
61
65
|
- !ruby/object:Gem::Version
|
|
62
|
-
version: '0.
|
|
66
|
+
version: '0.5'
|
|
63
67
|
- - ">="
|
|
64
68
|
- !ruby/object:Gem::Version
|
|
65
|
-
version: 0.
|
|
69
|
+
version: 0.5.0
|
|
66
70
|
type: :runtime
|
|
67
71
|
prerelease: false
|
|
68
72
|
version_requirements: !ruby/object:Gem::Requirement
|
|
69
73
|
requirements:
|
|
70
74
|
- - "~>"
|
|
71
75
|
- !ruby/object:Gem::Version
|
|
72
|
-
version: '0.
|
|
76
|
+
version: '0.5'
|
|
73
77
|
- - ">="
|
|
74
78
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0.
|
|
79
|
+
version: 0.5.0
|
|
76
80
|
- !ruby/object:Gem::Dependency
|
|
77
81
|
name: xmlregistry_objects
|
|
78
82
|
requirement: !ruby/object:Gem::Requirement
|
|
79
83
|
requirements:
|
|
80
84
|
- - "~>"
|
|
81
85
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0.
|
|
86
|
+
version: '0.8'
|
|
83
87
|
- - ">="
|
|
84
88
|
- !ruby/object:Gem::Version
|
|
85
|
-
version: 0.
|
|
89
|
+
version: 0.8.0
|
|
86
90
|
type: :runtime
|
|
87
91
|
prerelease: false
|
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
89
93
|
requirements:
|
|
90
94
|
- - "~>"
|
|
91
95
|
- !ruby/object:Gem::Version
|
|
92
|
-
version: '0.
|
|
96
|
+
version: '0.8'
|
|
93
97
|
- - ">="
|
|
94
98
|
- !ruby/object:Gem::Version
|
|
95
|
-
version: 0.
|
|
99
|
+
version: 0.8.0
|
|
96
100
|
description:
|
|
97
|
-
email:
|
|
101
|
+
email: digital.robertson@gmail.com
|
|
98
102
|
executables: []
|
|
99
103
|
extensions: []
|
|
100
104
|
extra_rdoc_files: []
|
|
@@ -119,8 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
119
123
|
- !ruby/object:Gem::Version
|
|
120
124
|
version: '0'
|
|
121
125
|
requirements: []
|
|
122
|
-
|
|
123
|
-
rubygems_version: 2.7.6
|
|
126
|
+
rubygems_version: 3.2.22
|
|
124
127
|
signing_key:
|
|
125
128
|
specification_version: 4
|
|
126
129
|
summary: An SPS client built for reponding to messages which match keywords and conditions.
|
metadata.gz.sig
CHANGED
|
Binary file
|