gitlab-org--gitlab-foss/app/models/ci/web_hook.rb

44 lines
1.1 KiB
Ruby
Raw Normal View History

2015-08-25 21:42:46 -04:00
# == Schema Information
#
# Table name: ci_web_hooks
2015-08-25 21:42:46 -04:00
#
# id :integer not null, primary key
# url :string(255) not null
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
#
module Ci
class WebHook < ActiveRecord::Base
extend Ci::Model
2015-09-10 09:47:15 -04:00
2015-08-25 21:42:46 -04:00
include HTTParty
2015-09-10 09:47:15 -04:00
belongs_to :project, class_name: 'Ci::Project'
2015-08-25 21:42:46 -04:00
# HTTParty timeout
default_timeout 10
2015-12-01 18:45:36 -05:00
validates :url, presence: true, url: true
2015-08-25 21:42:46 -04:00
def execute(data)
parsed_url = URI.parse(url)
if parsed_url.userinfo.blank?
Ci::WebHook.post(url, body: data.to_json, headers: { "Content-Type" => "application/json" }, verify: false)
else
post_url = url.gsub("#{parsed_url.userinfo}@", "")
auth = {
username: URI.decode(parsed_url.user),
password: URI.decode(parsed_url.password),
}
Ci::WebHook.post(post_url,
body: data.to_json,
headers: { "Content-Type" => "application/json" },
verify: false,
basic_auth: auth)
end
end
end
end