zh / watercoolr forked from capotej/watercoolr

pubsub via webhooks

This URL has Read+Write access

watercoolr / hooks.rb
100644 23 lines (20 sloc) 0.757 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
require 'xmpp4r'
require 'xmpp4r-simple'
 
def hook(name)
  # default secret token
  rec_all = DB[:users].filter(:name => 'all', :service => 'hooks').first
  raise "[E] No default hooks secret token - /hooks/#{name}/:SECRET/" unless rec_all
  # secret per hook
  rec = DB[:users].filter(:name => "#{name}", :service => 'hooks').first
  rec = rec_all unless rec
  MyTimer.timeout(10) do
    post "/hook/#{name}/#{rec[:password]}/" do
      raise "[E] No 'payload' parameted provided" unless params[:payload]
      payload = JSON.parse(params[:payload])
      data = params[:data] ? JSON.parse(params[:data]) : {}
      yield data, payload
    end
  end
  rescue Timeout::Error
end
 
Dir["#{File.dirname(__FILE__)}/hooks/**/*.rb"].each { |hook| load hook }