Sha256: 6b939f2ae3a93fa5c09914f045e3033811781ffe3d94977c254cc8fd76057964
Contents?: true
Size: 884 Bytes
Versions: 1
Compression:
Stored size: 884 Bytes
Contents
require 'sinatra/base' require 'json' module Pushpop class Web def app Sinatra::Application end def routes @routes ||= [] end 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 { 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 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pushpop-0.3.1 | lib/pushpop/web.rb |