debian-mirror-gitlab/app/models/project_services/flowdock_service.rb

90 lines
2.1 KiB
Ruby
Raw Normal View History

2014-09-02 18:07:02 +05:30
require "flowdock-git-hook"
2018-10-15 14:42:47 +05:30
# Flow dock depends on Grit to compute the number of commits between two given
# commits. To make this depend on Gitaly, a monkey patch is applied
module Flowdock
class Git
# pass down a Repository all the way down
def repo
@options[:repo]
end
def config
{}
end
def messages
Git::Builder.new(repo: repo,
ref: @ref,
before: @from,
after: @to,
commit_url: @commit_url,
branch_url: @branch_url,
diff_url: @diff_url,
repo_url: @repo_url,
repo_name: @repo_name,
permanent_refs: @permanent_refs,
tags: tags
).to_hashes
end
class Builder
def commits
@repo.commits_between(@before, @after).map do |commit|
{
url: @opts[:commit_url] ? @opts[:commit_url] % [commit.sha] : nil,
id: commit.sha,
message: commit.message,
author: {
name: commit.author_name,
email: commit.author_email
}
}
end
end
end
end
end
2014-09-02 18:07:02 +05:30
class FlowdockService < Service
2015-04-26 12:48:37 +05:30
prop_accessor :token
2014-09-02 18:07:02 +05:30
validates :token, presence: true, if: :activated?
def title
'Flowdock'
end
def description
'Flowdock is a collaboration web app for technical teams.'
end
2017-08-17 22:00:37 +05:30
def self.to_param
2014-09-02 18:07:02 +05:30
'flowdock'
end
def fields
[
2017-09-10 17:25:29 +05:30
{ type: 'text', name: 'token', placeholder: 'Flowdock Git source token', required: true }
2014-09-02 18:07:02 +05:30
]
end
2017-08-17 22:00:37 +05:30
def self.supported_events
2015-04-26 12:48:37 +05:30
%w(push)
end
def execute(data)
return unless supported_events.include?(data[:object_kind])
2014-09-02 18:07:02 +05:30
Flowdock::Git.post(
2015-04-26 12:48:37 +05:30
data[:ref],
data[:before],
data[:after],
2014-09-02 18:07:02 +05:30
token: token,
2018-10-15 14:42:47 +05:30
repo: project.repository,
2017-09-10 17:25:29 +05:30
repo_url: "#{Gitlab.config.gitlab.url}/#{project.full_path}",
commit_url: "#{Gitlab.config.gitlab.url}/#{project.full_path}/commit/%s",
diff_url: "#{Gitlab.config.gitlab.url}/#{project.full_path}/compare/%s...%s"
2015-12-23 02:04:40 +05:30
)
2014-09-02 18:07:02 +05:30
end
end