Class: Gitlab::Triage::Action::Comment
- Defined in:
- lib/gitlab/triage/action/comment.rb
Direct Known Subclasses
Defined Under Namespace
Classes: Dry
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- #act ⇒ Object
- #build_comment(resource) ⇒ Object private
- #build_post_url(resource) ⇒ Object private
- #perform(resource, comment) ⇒ Object private
- #resource_id(resource) ⇒ Object private
- #sub_resource_type ⇒ Object private
Methods inherited from Base
Constructor Details
This class inherits a constructor from Gitlab::Triage::Action::Base
Instance Method Details
#act ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/gitlab/triage/action/comment.rb', line 30 def act if policy.type == 'branches' puts Gitlab::Triage::UI.warn "Comment actions are not available for branches. They will NOT be performed\n\n" return end policy.resources.each do |resource| comment = build_comment(resource).strip perform(resource, comment) unless comment.empty? end end |
#build_comment(resource) ⇒ Object (private)
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/gitlab/triage/action/comment.rb', line 45 def build_comment(resource) CommandBuilders::CommentCommandBuilder.new( [ CommandBuilders::TextContentBuilder.new(policy.actions[:comment], resource: resource, network: network).build_command, CommandBuilders::LabelCommandBuilder.new(policy.actions[:labels], resource: resource, network: network).build_command, CommandBuilders::RemoveLabelCommandBuilder.new(policy.actions[:remove_labels], resource: resource, network: network).build_command, CommandBuilders::CcCommandBuilder.new(policy.actions[:mention]).build_command, CommandBuilders::MoveCommandBuilder.new(policy.actions[:move]).build_command, CommandBuilders::StatusCommandBuilder.new(policy.actions[:status]).build_command ] ).build_command end |
#build_post_url(resource) ⇒ Object (private)
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/gitlab/triage/action/comment.rb', line 64 def build_post_url(resource) url_builder_opts = { network_options: network., source: policy.source, source_id: resource[policy.source_id_sym], resource_type: policy.type, resource_id: resource_id(resource), sub_resource_type: sub_resource_type } # POST /(groups|projects)/:id/(epics|issues|merge_requests)/:iid/notes post_url = UrlBuilders::UrlBuilder.new(url_builder_opts).build puts Gitlab::Triage::UI.debug "post_url: #{post_url}" if network..debug post_url end |
#perform(resource, comment) ⇒ Object (private)
58 59 60 61 62 |
# File 'lib/gitlab/triage/action/comment.rb', line 58 def perform(resource, comment) network.post_api( build_post_url(resource), body: comment) end |
#resource_id(resource) ⇒ Object (private)
93 94 95 96 97 98 99 100 |
# File 'lib/gitlab/triage/action/comment.rb', line 93 def resource_id(resource) case policy.type when 'epics' resource['id'] else resource['iid'] end end |
#sub_resource_type ⇒ Object (private)
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/gitlab/triage/action/comment.rb', line 82 def sub_resource_type case type = policy.actions[:comment_type] when 'comment', nil # nil is default 'notes' when 'thread' 'discussions' else raise ArgumentError, "Unknown comment type: #{type}" end end |