-
Notifications
You must be signed in to change notification settings - Fork 1
/
pollen.rb
38 lines (28 loc) · 922 Bytes
/
pollen.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
require 'jsonclient'
class RestHook
def initialize(unit)
@unit = unit
end
def emit(action , msg)
prot = @unit.conf['pollen_prot'] || 'http'
host = @unit.conf['pollen_host'] || 'localhost'
port = @unit.conf['pollen_port'] || '3000'
path = @unit.conf['pollen_path'] || 'hookhandler'
uri = "#{prot}://#{host}:#{port}/#{path}/#{msg['exid']}/#{action}"
# e.g. https://host.org:80/hookhandler/dom-u0-20170514.0383.falibi/returned
JSONClient.new.put(uri, { message: msg })
logger = Logger.new($stdout)
logger.level = Logger::DEBUG
logger.datetime_format = "%Y-%m-%d %H:%M:%S"
logger.info("Pollen: #{action} for #{msg['exid']}")
end
end
actions = ['launched', 'returned', 'terminated', 'error', 'cancel']
actions.each do |a|
eval "class #{a.capitalize}PollenHook < RestHook
def on (conf, msg)
emit(\"#{a}\", msg)
[] # TODO
end
end"
end