class FerrisBueller::JiraAPI
Public Class Methods
new(options={})
click to toggle source
# File lib/ferris-bueller/jira_api.rb, line 11 def initialize options={} @user = options.fetch :user @pass = options.fetch :pass @api_url = options.fetch :api_url @base_path = options.fetch :base_path, '/rest/api/2' @logger = options.fetch :logger, Slog.new log.debug event: 'Jira API client initialized' end
Public Instance Methods
send(path, data={})
click to toggle source
# File lib/ferris-bueller/jira_api.rb, line 20 def send path, data={} uri = URI File.join(@api_url, @base_path, path) http = Net::HTTP.new uri.hostname, uri.port http.use_ssl if uri.scheme == 'https' req = Net::HTTP::Post.new uri req.basic_auth @user, @pass req['Content-Type'] = 'application/json' req['Accept'] = 'application/json' req.body = JSON.generate data log.debug \ event: 'sending Jira API request', path: path, data: data raw_res = http.request(req).body begin return nil unless raw_res res = JSON.parse raw_res, symbolize_names: true log.debug \ event: 'Jira API request returned', path: path, data: data, response: res res rescue => e log.error \ event: 'exception parsing jira response', response: raw_res.inspect, exception: e.class, message: e.message.inspect, backtrace: e.backtrace raise e end end
Private Instance Methods
log()
click to toggle source
# File lib/ferris-bueller/jira_api.rb, line 55 def log ; @logger end