Class: Gitlab::Triage::Action::Summarize

Inherits:
Base
  • Object
show all
Defined in:
lib/gitlab/triage/action/summarize.rb

Direct Known Subclasses

Dry

Defined Under Namespace

Classes: Dry

Constant Summary collapse

SUMMARY_RESOURCE_TYPE =
'issues'

Instance Attribute Summary

Attributes inherited from Base

#network, #policy

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from Gitlab::Triage::Action::Base

Instance Method Details

#actObject



35
36
37
# File 'lib/gitlab/triage/action/summarize.rb', line 35

def act
  perform if issue.valid?
end

#destinationObject (private)



54
55
56
# File 'lib/gitlab/triage/action/summarize.rb', line 54

def destination
  issue.destination || network.options.source_id
end

#group_summary_without_destination?Boolean (private)

Returns:

  • (Boolean)


58
59
60
# File 'lib/gitlab/triage/action/summarize.rb', line 58

def group_summary_without_destination?
  network.options.source == :groups && !issue.destination
end

#issueObject (private)



50
51
52
# File 'lib/gitlab/triage/action/summarize.rb', line 50

def issue
  @issue ||= policy.build_summary
end

#performObject (private)



41
42
43
44
45
46
47
48
# File 'lib/gitlab/triage/action/summarize.rb', line 41

def perform
  if group_summary_without_destination?
    puts Gitlab::Triage::UI.warn("Issue was not created: No summary destination specified when source is 'groups'.")
    return
  end

  policy.summary = network.post_api(post_issue_url, post_issue_body)
end

#post_issue_bodyObject (private)



76
77
78
79
80
81
# File 'lib/gitlab/triage/action/summarize.rb', line 76

def post_issue_body
  {
    title: issue.title,
    description: issue.description
  }
end

#post_issue_urlObject (private)



62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/gitlab/triage/action/summarize.rb', line 62

def post_issue_url
  # POST /projects/:id/issues
  # https://docs.gitlab.com/ee/api/issues.html#new-issue
  post_url = UrlBuilders::UrlBuilder.new(
    network_options: network.options,
    source_id: destination,
    resource_type: SUMMARY_RESOURCE_TYPE
  ).build

  puts Gitlab::Triage::UI.debug "post_issue_url: #{post_url}" if network.options.debug

  post_url
end