edab46e9fa
This commit includes: * Projects can have zero or more WebHooks. * The PostReceive job will ask a project to execute any web hooks defined for that project. * WebHook has a URL, we post Github-compatible JSON to that URL. * Failure to execute a WebHook will be silently ignored.
20 lines
506 B
Ruby
20 lines
506 B
Ruby
class WebHook < ActiveRecord::Base
|
|
include HTTParty
|
|
|
|
# HTTParty timeout
|
|
default_timeout 10
|
|
|
|
belongs_to :project
|
|
|
|
validates :url,
|
|
presence: true,
|
|
format: {
|
|
with: /(^$)|(^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$)/ix,
|
|
message: "should be a valid url" }
|
|
|
|
def execute(data)
|
|
WebHook.post(url, body: data.to_json)
|
|
rescue
|
|
# There was a problem calling this web hook, let's forget about it.
|
|
end
|
|
end
|