Module: Legion::Extensions::Jira::Issues::Runners::Issues

Includes:
Helpers::Lex, Helpers::Client
Included in:
Client
Defined in:
lib/legion/extensions/jira/issues/runners/issues.rb

Instance Method Summary collapse

Methods included from Helpers::Client

#connection, #upload_connection

Instance Method Details

#bulk_create_issues(issues:) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/legion/extensions/jira/issues/runners/issues.rb', line 57

def bulk_create_issues(issues:, **)
  issue_updates = issues.map do |i|
    {
      fields: {
        project:   { key: i[:project_key] },
        summary:   i[:summary],
        issuetype: { name: i[:issue_type] || 'Task' }
      }
    }
  end
  resp = connection(**).post('/rest/api/3/issue/bulk', { issueUpdates: issue_updates })
  { issues: resp.body }
end

#create_issue(project_key:, summary:, issue_type: 'Task', description: nil, assignee: nil, priority: nil, labels: nil) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/legion/extensions/jira/issues/runners/issues.rb', line 13

def create_issue(project_key:, summary:, issue_type: 'Task', description: nil,
                 assignee: nil, priority: nil, labels: nil, **)
  body = {
    fields: {
      project:   { key: project_key },
      summary:   summary,
      issuetype: { name: issue_type }
    }
  }
  body[:fields][:description] = description if description
  body[:fields][:assignee]    = { accountId: assignee } if assignee
  body[:fields][:priority]    = { name: priority } if priority
  body[:fields][:labels]      = labels if labels
  resp = connection(**).post('/rest/api/3/issue', body)
  { issue: resp.body }
end

#delete_issue(issue_key:, delete_subtasks: false) ⇒ Object



48
49
50
51
52
53
54
55
# File 'lib/legion/extensions/jira/issues/runners/issues.rb', line 48

def delete_issue(issue_key:, delete_subtasks: false, **)
  params = {}
  params[:deleteSubtasks] = true if delete_subtasks
  resp = connection(**).delete("/rest/api/3/issue/#{issue_key}") do |req|
    req.params = params
  end
  { deleted: resp.status == 204, issue_key: issue_key }
end

#get_issue(issue_key:, fields: nil, expand: nil) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/legion/extensions/jira/issues/runners/issues.rb', line 30

def get_issue(issue_key:, fields: nil, expand: nil, **)
  params = {}
  params[:fields] = fields if fields
  params[:expand] = expand if expand
  resp = connection(**).get("/rest/api/3/issue/#{issue_key}", params)
  { issue: resp.body }
end

#get_issue_changelog(issue_key:, start_at: 0, max_results: 100) ⇒ Object



71
72
73
74
75
# File 'lib/legion/extensions/jira/issues/runners/issues.rb', line 71

def get_issue_changelog(issue_key:, start_at: 0, max_results: 100, **)
  params = { startAt: start_at, maxResults: max_results }
  resp = connection(**).get("/rest/api/3/issue/#{issue_key}/changelog", params)
  { changelog: resp.body }
end

#update_issue(issue_key:, summary: nil, description: nil, assignee: nil, priority: nil) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/legion/extensions/jira/issues/runners/issues.rb', line 38

def update_issue(issue_key:, summary: nil, description: nil, assignee: nil, priority: nil, **)
  fields = {}
  fields[:summary]     = summary if summary
  fields[:description] = description if description
  fields[:assignee]    = { accountId: assignee } if assignee
  fields[:priority]    = { name: priority } if priority
  resp = connection(**).put("/rest/api/3/issue/#{issue_key}", { fields: fields })
  { updated: resp.status == 204, issue_key: issue_key }
end