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
# File 'lib/terjira/client/issue.rb', line 9

def all(options = {})
  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



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

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

.assign(issue, assignee) ⇒ Object



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

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



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

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

.create(options = {}) ⇒ Object



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

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

.delete(issue) ⇒ Object



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

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

.edit_comment(issue, comment_id, message) ⇒ Object



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

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



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

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

.search(options = {}) ⇒ Object



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

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

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



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

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



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

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

.write_comment(issue, message) ⇒ Object



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

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