summaryrefslogtreecommitdiff
path: root/app/mailers
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzegorz.bizon@ntsn.pl>2015-11-17 13:08:42 +0100
committerGrzegorz Bizon <grzegorz.bizon@ntsn.pl>2015-12-08 08:43:08 +0100
commit8c6db54e1283348f64b46733875db7ffe08993a6 (patch)
tree215b268733dce731c4df5a0ebd886c8d524dc91a /app/mailers
parent79fb993a6598df4836e5c0ed4e27a72e844429fc (diff)
downloadgitlab-ce-8c6db54e1283348f64b46733875db7ffe08993a6.tar.gz
Extract repository_push_email to separate class
Diffstat (limited to 'app/mailers')
-rw-r--r--app/mailers/emails/projects.rb96
1 files changed, 19 insertions, 77 deletions
diff --git a/app/mailers/emails/projects.rb b/app/mailers/emails/projects.rb
index caba63006da..92bca4e6181 100644
--- a/app/mailers/emails/projects.rb
+++ b/app/mailers/emails/projects.rb
@@ -59,85 +59,27 @@ module Emails
subject: subject("Project was moved"))
end
- def repository_push_email(project_id, recipient, author_id: nil,
- ref: nil,
- action: nil,
- compare: nil,
- reverse_compare: false,
- send_from_committer_email: false,
- disable_diffs: false)
- unless author_id && ref && action
- raise ArgumentError, "missing keywords: author_id, ref, action"
- end
-
- @project = Project.find(project_id)
- @current_user = @author = User.find(author_id)
- @reverse_compare = reverse_compare
- @compare = compare
- @ref_name = Gitlab::Git.ref_name(ref)
- @ref_type = Gitlab::Git.tag_ref?(ref) ? "tag" : "branch"
- @action = action
- @disable_diffs = disable_diffs
-
- if @compare
- @commits = Commit.decorate(compare.commits, @project)
- @diffs = compare.diffs
- end
-
- @action_name =
- case action
- when :create
- "pushed new"
- when :delete
- "deleted"
- else
- "pushed to"
- end
-
- @subject = "[Git]"
- @subject << "[#{@project.path_with_namespace}]"
- @subject << "[#{@ref_name}]" if action == :push
- @subject << " "
-
- if action == :push
- if @commits.length > 1
- @target_url = namespace_project_compare_url(@project.namespace,
- @project,
- from: Commit.new(@compare.base, @project),
- to: Commit.new(@compare.head, @project))
- @subject << "Deleted " if @reverse_compare
- @subject << "#{@commits.length} commits: #{@commits.first.title}"
- else
- @target_url = namespace_project_commit_url(@project.namespace,
- @project, @commits.first)
-
- @subject << "Deleted 1 commit: " if @reverse_compare
- @subject << @commits.first.title
- end
- else
- unless action == :delete
- @target_url = namespace_project_tree_url(@project.namespace,
- @project, @ref_name)
- end
-
- subject_action = @action_name.dup
- subject_action[0] = subject_action[0].capitalize
- @subject << "#{subject_action} #{@ref_type} #{@ref_name}"
- end
-
+ def repository_push_email(project_id, recipient, opts = {})
+ email = Gitlab::Email::RepositoryPush.new(project_id, recipient, opts)
+
+ @project = email.project
+ @current_user = @author = email.author
+ @reverse_compare = email.reverse_compare
+ @compare = email.compare
+ @ref_name = email.ref_name
+ @ref_type = email.ref_type
+ @action = email.action
+ @disable_diffs = email.disable_diffs
+ @commits = email.commits
+ @diffs = email.diffs
+ @action_name = email.action_name
+ @target_url = email.target_url
@disable_footer = true
- reply_to =
- if send_from_committer_email && can_send_from_user_email?(@author)
- @author.email
- else
- Gitlab.config.gitlab.email_reply_to
- end
-
- mail(from: sender(author_id, send_from_committer_email),
- reply_to: reply_to,
- to: recipient,
- subject: @subject)
+ mail(from: sender(email.author_id, email.send_from_committer_email),
+ reply_to: email.reply_to,
+ to: email.recipient,
+ subject: email.subject)
end
end
end