class Jira::Dispatcher
Jira
class wrapper that basically runs the script
Attributes
config[RW]
request_queue[RW]
Public Class Methods
new()
click to toggle source
# File lib/jira-script.rb, line 10 def initialize self.config = { api_path: 'rest/api/2', default_issue_type: 'Story', default_subtask_type: 'Technical task', verbosity: 1 } end
Public Instance Methods
_get_request_config(res, type, response_node = :key)
click to toggle source
build request config
# File lib/jira-script.rb, line 49 def _get_request_config(res, type, response_node = :key) { user: config[:user], password: config[:password], host: config[:host], api_path: config[:api_path], headers: {}, body: {}, project: config[:project], http_request_type: type, resource: res, default_issue_type: config[:default_issue_type], default_subtask_type: config[:default_subtask_type], verbosity: config[:verbosity], response_node: response_node } end
api_path(api)
click to toggle source
# File lib/jira-script.rb, line 32 def api_path(api) config[:api_path] = api end
create(summary, &block)
click to toggle source
# File lib/jira-script.rb, line 77 def create(summary, &block) # create new request request_config = _get_request_config('issue', :post) request = Request.new(:create, request_config) request.summary summary request.project config[:project] request.instance_eval(&block) if block_given? # run request request.run end
delete(key)
click to toggle source
# File lib/jira-script.rb, line 90 def delete(key) request_config = _get_request_config("issue/#{key}", :delete) request_config[:response_node] = nil request = Request.new(:delete, request_config) request.run end
download_att(filename, url)
click to toggle source
# File lib/jira-script.rb, line 111 def download_att(filename, url) req = Typhoeus::Request.new( url, ssl_verifypeer: false, method: :get, userpwd: "#{config[:user]}:#{config[:password]}", ) ret = false req.on_complete do |response| ret = response.success? if response.success? f = File.new(filename, "wb") f.write(response.body) end end req.run ret end
get(key)
click to toggle source
# File lib/jira-script.rb, line 105 def get(key) request_config = _get_request_config("issue/#{key}", :get, :fields) request = Request.new(:list, request_config) request.run end
host(h)
click to toggle source
# File lib/jira-script.rb, line 28 def host(h) config[:host] = h end
password(p)
click to toggle source
# File lib/jira-script.rb, line 24 def password(p) config[:password] = p end
project(p)
click to toggle source
# File lib/jira-script.rb, line 36 def project(p) config[:project] = p end
quite(on)
click to toggle source
# File lib/jira-script.rb, line 40 def quite(on) self.config[:verbosity] = 0 if on end
search(jql)
click to toggle source
# File lib/jira-script.rb, line 97 def search(jql) request_config = _get_request_config("search?jql=#{jql}", :get, :issues) request = Request.new(:search, request_config) # run request request.run end
update(key, &block)
click to toggle source
update command
# File lib/jira-script.rb, line 68 def update(key, &block) raise RequestException, "No update definition provided for issue #{key}" unless block_given? request_config = _get_request_config('issue/' + key, :put) request = Request.new(:update, request_config) request.key = key request.instance_eval(&block) request.run end
upload_att(key, file)
click to toggle source
# File lib/jira-script.rb, line 130 def upload_att(key, file) request_config = _get_request_config("issue/#{key}/attachments", :post) request_config[:response_node] = nil request_config[:headers] = { 'X-Atlassian-Token' => 'no-check', 'Content-Type' => 'multipart/form-data' } request_config[:body] = { file: File.open(file, "r") } request = Request.new(:attachments, request_config) request.upload end
user(u)
click to toggle source
config related methods
# File lib/jira-script.rb, line 20 def user(u) config[:user] = u end
verbosity(v)
click to toggle source
# File lib/jira-script.rb, line 44 def verbosity(v) self.config[:verbosity] = v end