15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/pushpop/web.rb', line 15
def add_route(url, job)
if url[0] != '/'
url = "/#{url}"
end
raise "Route #{url} is already set up as a webhook" if routes.include?(url)
runner = lambda do
response = self.instance_eval(&job.webhook_proc)
if response
job.run(response, {'webhook' => response})
{
status: 'success',
job: job.name
}.to_json
else
{
status: 'failed',
job: job.name,
message: 'webhook step did not pass'
}.to_json
end
end
Sinatra::Application.get url, &runner
Sinatra::Application.post url, &runner
Sinatra::Application.put url, &runner
routes.push(url)
end
|