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
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