class Terjira::Client::Issue
Public Class Methods
all(options = {})
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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 = {})
click to toggle source
# 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)
click to toggle source
# File lib/terjira/client/issue.rb, line 29 def delete(issue) api_delete("issue/#{issue.key_value}") end
edit_comment(issue, comment_id, message)
click to toggle source
# 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 = {})
click to toggle source
# 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 = {})
click to toggle source
# File lib/terjira/client/issue.rb, line 25 def search(options = {}) resource.jql(build_jql(options)) end
trans(issue, options = {})
click to toggle source
# 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 = {})
click to toggle source
# 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)
click to toggle source
# 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
Private Class Methods
convert_param_key_value_hash(resource)
click to toggle source
# File lib/terjira/client/issue.rb, line 111 def convert_param_key_value_hash(resource) if resource.respond_to? :key_with_key_value okey, ovalue = resource.key_with_key_value { okey => ovalue } elsif resource =~ /^\d+$/ { id: resource.key_value } else { name: resource.key_value } end end
extract_to_fields_params(options = {})
click to toggle source
# File lib/terjira/client/issue.rb, line 92 def extract_to_fields_params(options = {}) opts = options.dup params = {} custom_fields = options.keys.select { |k| k.to_s =~ /^customfield/ } (custom_fields + [:summary, :description]).each_entry do |k, _v| params[k] = opts.delete(k) if opts.key?(k) end [:project, :parent].each do |resource| params[resource] = { key: opts.delete(resource).key_value } if opts.key?(resource) end opts.each { |k, v| params[k] = convert_param_key_value_hash(v) } { fields: params } end
extract_to_transition_param(options = {})
click to toggle source
# File lib/terjira/client/issue.rb, line 85 def extract_to_transition_param(options = {}) transition = options.delete(:status) transition ||= options.delete(:transition) return unless transition { transition: convert_param_key_value_hash(transition) } end
extract_to_update_params(options = {})
click to toggle source
# File lib/terjira/client/issue.rb, line 77 def extract_to_update_params(options = {}) params = {} if comment = options.delete(:comment) params[:comment] = [{ add: { body: comment } }] end { update: params } end