diff options
author | Michael Kozono <mkozono@gmail.com> | 2019-08-29 00:12:37 +0300 |
---|---|---|
committer | Michael Kozono <mkozono@gmail.com> | 2019-08-29 01:18:58 +0300 |
commit | 50342028aa9eecaa0b9bbf7e4161b2a5eb90dcfa (patch) | |
tree | c7190f47d25c8ecb9e770de061d6061e99ec514b /lib/gitlab/internal_post_receive | |
parent | a82e14c1c84369f2d7a0251311df84043d13f946 (diff) |
Simplify internal post receive messages
Instead of sending varied data to Gitaly, and making Gitaly construct
various messages, build the messages first and have Gitaly print
either basic messages or alert messages, in the order they come.
Depends on https://gitlab.com/gitlab-org/gitaly/merge_requests/1410
Diffstat (limited to 'lib/gitlab/internal_post_receive')
-rw-r--r-- | lib/gitlab/internal_post_receive/response.rb | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/gitlab/internal_post_receive/response.rb b/lib/gitlab/internal_post_receive/response.rb new file mode 100644 index 00000000000..7e7ec2aa45c --- /dev/null +++ b/lib/gitlab/internal_post_receive/response.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +module Gitlab + module InternalPostReceive + class Response + attr_accessor :reference_counter_decreased + attr_reader :messages + + Message = Struct.new(:message, :type) do + def self.basic(text) + new(text, :basic) + end + + def self.alert(text) + new(text, :alert) + end + end + + def initialize + @messages = [] + @reference_counter_decreased = false + end + + def add_merge_request_urls(urls_data) + urls_data.each do |url_data| + add_merge_request_url(url_data) + end + end + + def add_merge_request_url(url_data) + message = if url_data[:new_merge_request] + "To create a merge request for #{url_data[:branch_name]}, visit:" + else + "View merge request for #{url_data[:branch_name]}:" + end + + message += "\n #{url_data[:url]}" + + add_basic_message(message) + end + + def add_basic_message(text) + @messages << Message.basic(text) if text.present? + end + + def add_alert_message(text) + @messages.unshift(Message.alert(text)) if text.present? + end + end + end +end |