summaryrefslogtreecommitdiff
path: root/lib/gitlab/push_data_builder.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/push_data_builder.rb')
-rw-r--r--lib/gitlab/push_data_builder.rb93
1 files changed, 0 insertions, 93 deletions
diff --git a/lib/gitlab/push_data_builder.rb b/lib/gitlab/push_data_builder.rb
deleted file mode 100644
index c8f12577112..00000000000
--- a/lib/gitlab/push_data_builder.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-module Gitlab
- class PushDataBuilder
- class << self
- # Produce a hash of post-receive data
- #
- # data = {
- # before: String,
- # after: String,
- # ref: String,
- # user_id: String,
- # user_name: String,
- # user_email: String
- # project_id: String,
- # repository: {
- # name: String,
- # url: String,
- # description: String,
- # homepage: String,
- # },
- # commits: Array,
- # total_commits_count: Fixnum
- # }
- #
- def build(project, user, oldrev, newrev, ref, commits = [], message = nil)
- commits = Array(commits)
-
- # Total commits count
- commits_count = commits.size
-
- # Get latest 20 commits ASC
- commits_limited = commits.last(20)
-
- # For performance purposes maximum 20 latest commits
- # will be passed as post receive hook data.
- commit_attrs = commits_limited.map do |commit|
- commit.hook_attrs(with_changed_files: true)
- end
-
- type = Gitlab::Git.tag_ref?(ref) ? 'tag_push' : 'push'
-
- # Hash to be passed as post_receive_data
- data = {
- object_kind: type,
- event_name: type,
- before: oldrev,
- after: newrev,
- ref: ref,
- checkout_sha: checkout_sha(project.repository, newrev, ref),
- message: message,
- user_id: user.id,
- user_name: user.name,
- user_email: user.email,
- user_avatar: user.avatar_url,
- project_id: project.id,
- project: project.hook_attrs,
- commits: commit_attrs,
- total_commits_count: commits_count,
- # DEPRECATED
- repository: project.hook_attrs.slice(:name, :url, :description, :homepage,
- :git_http_url, :git_ssh_url, :visibility_level)
- }
-
- data
- end
-
- # This method provide a sample data generated with
- # existing project and commits to test webhooks
- def build_sample(project, user)
- commits = project.repository.commits(project.default_branch, limit: 3)
- ref = "#{Gitlab::Git::BRANCH_REF_PREFIX}#{project.default_branch}"
- build(project, user, commits.last.id, commits.first.id, ref, commits)
- end
-
- def checkout_sha(repository, newrev, ref)
- # Checkout sha is nil when we remove branch or tag
- return if Gitlab::Git.blank_ref?(newrev)
-
- # Find sha for tag, except when it was deleted.
- if Gitlab::Git.tag_ref?(ref)
- tag_name = Gitlab::Git.ref_name(ref)
- tag = repository.find_tag(tag_name)
-
- if tag
- commit = repository.commit(tag.target)
- commit.try(:sha)
- end
- else
- newrev
- end
- end
- end
- end
-end