Class: Terjira::Client::Issue

Inherits:
Base
  • Object
show all
Defined in:
lib/terjira/client/issue.rb

Constant Summary

Constants inherited from Base

Base::AGILE_API_PATH, Base::DEFAULT_API_PATH, Base::DEFAULT_CACHE_SEC

Constants included from JQLBuilder

JQLBuilder::SEARCH_KEYS, JQLBuilder::STRICT_KEYS

Constants included from AuthOptionBuilder

AuthOptionBuilder::AUTH_CACHE_KEY

Class Method Summary collapse

Methods inherited from Base

cache, class_name, client, parse_body, resource, site_url, username

Methods included from JQLBuilder

#build_jql

Methods included from AuthOptionBuilder

#auth_file_cache, #build_auth_options, #build_auth_options_by_cached, #build_auth_options_by_tty, #expire_auth_options

Class Method Details

.all(options = {}) ⇒ Object



9
10
11
12
13
14
# File 'lib/terjira/client/issue.rb', line 9

def all(options = {})
  options.delete(:assignee) if options[:assignee] =~ /^all/i
  return resource.all if options.blank?
  max_results = options.delete(:max_results) || 500
  jql(build_jql(options), max_results: max_results)
end

.all_epic_issues(epic) ⇒ Object



16
17
18
19
# File 'lib/terjira/client/issue.rb', line 16

def all_epic_issues(epic)
  resp = agile_api_get("epic/#{epic.key}/issue")
  resp["issues"].map { |issue| build(issue) }
end

.assign(issue, assignee) ⇒ Object



34
35
36
37
# File 'lib/terjira/client/issue.rb', line 34

def assign(issue, assignee)
  body = { name: assignee.key_value }.to_json
  api_put("issue/#{issue.key_value}/assignee", body)
end

.attach_file(issue, file) ⇒ Object



39
40
41
42
43
# File 'lib/terjira/client/issue.rb', line 39

def attach_file(issue, file)
  attachment = JIRA::Resource::Attachment.new(client, issue: find(issue))
  attachment.save!('file' => file)
  find(issue)
end

.create(options = {}) ⇒ Object



55
56
57
58
59
# File 'lib/terjira/client/issue.rb', line 55

def create(options = {})
  params = extract_to_fields_params(options)
  resp = api_post 'issue', params.to_json
  find(resp['id'])
end

.delete(issue) ⇒ Object



30
31
32
# File 'lib/terjira/client/issue.rb', line 30

def delete(issue)
  api_delete("issue/#{issue.key_value}")
end

.edit_comment(issue, comment_id, message) ⇒ Object



50
51
52
53
# File 'lib/terjira/client/issue.rb', line 50

def edit_comment(issue, comment_id, message)
  api_put("issue/#{issue.key_value}/comment/#{comment_id}", { body: message }.to_json)
  find(issue)
end

.find(issue, options = {}) ⇒ Object



21
22
23
24
# File 'lib/terjira/client/issue.rb', line 21

def find(issue, options = {})
  resp = agile_api_get("issue/#{issue.key_value}", options)
  build(resp)
end

.search(options = {}) ⇒ Object



26
27
28
# File 'lib/terjira/client/issue.rb', line 26

def search(options = {})
  resource.jql(build_jql(options))
end

.trans(issue, options = {}) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/terjira/client/issue.rb', line 68

def trans(issue, options = {})
  params = extract_to_transition_param(options)
  params.merge!(extract_to_update_params(options))
  params.merge!(extract_to_fields_params(options))
  api_post "issue/#{issue.key_value}/transitions", params.to_json
  find(issue)
end

.update(issue, options = {}) ⇒ Object



61
62
63
64
65
66
# File 'lib/terjira/client/issue.rb', line 61

def update(issue, options = {})
  params = extract_to_update_params(options)
  params.merge!(extract_to_fields_params(options))
  resp = api_put "issue/#{issue.key_value}", params.to_json
  find(issue)
end

.write_comment(issue, message) ⇒ Object



45
46
47
48
# File 'lib/terjira/client/issue.rb', line 45

def write_comment(issue, message)
  api_post("issue/#{issue.key_value}/comment", { body: message }.to_json)
  find(issue)
end