Class: JiraGateway
Instance Attribute Summary collapse
-
#ignore_ssl_errors ⇒ Object
Returns the value of attribute ignore_ssl_errors.
-
#jira_url ⇒ Object
Returns the value of attribute jira_url.
Instance Method Summary collapse
- #call_command(command) ⇒ Object
- #call_url(relative_url:) ⇒ Object
-
#initialize(file_system:) ⇒ JiraGateway
constructor
A new instance of JiraGateway.
- #load_jira_config(jira_config) ⇒ Object
- #make_curl_command(url:) ⇒ Object
Constructor Details
#initialize(file_system:) ⇒ JiraGateway
Returns a new instance of JiraGateway.
10 11 12 |
# File 'lib/jirametrics/jira_gateway.rb', line 10 def initialize file_system: @file_system = file_system end |
Instance Attribute Details
#ignore_ssl_errors ⇒ Object
Returns the value of attribute ignore_ssl_errors.
8 9 10 |
# File 'lib/jirametrics/jira_gateway.rb', line 8 def ignore_ssl_errors @ignore_ssl_errors end |
#jira_url ⇒ Object
Returns the value of attribute jira_url.
8 9 10 |
# File 'lib/jirametrics/jira_gateway.rb', line 8 def jira_url @jira_url end |
Instance Method Details
#call_command(command) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/jirametrics/jira_gateway.rb', line 22 def call_command command @file_system.log " #{command.gsub(/\s+/, ' ')}" result = `#{command}` @file_system.log result unless $CHILD_STATUS.success? return result if $CHILD_STATUS.success? @file_system.log "Failed call with exit status #{$CHILD_STATUS.exitstatus}." raise "Failed call with exit status #{$CHILD_STATUS.exitstatus}. " \ "See #{@file_system.logfile_name} for details" end |
#call_url(relative_url:) ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/jirametrics/jira_gateway.rb', line 14 def call_url relative_url: command = make_curl_command url: "#{@jira_url}#{relative_url}" result = call_command command JSON.parse result rescue => e # rubocop:disable Style/RescueStandardError raise "Error #{e..inspect} when parsing result: #{result.inspect}" end |
#load_jira_config(jira_config) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/jirametrics/jira_gateway.rb', line 33 def load_jira_config jira_config @jira_url = jira_config['url'] raise 'Must specify URL in config' if @jira_url.nil? @jira_email = jira_config['email'] @jira_api_token = jira_config['api_token'] @jira_personal_access_token = jira_config['personal_access_token'] raise 'When specifying an api-token, you must also specify email' if @jira_api_token && !@jira_email if @jira_api_token && @jira_personal_access_token raise "You can't specify both an api-token and a personal-access-token. They don't work together." end @cookies = (jira_config['cookies'] || []).collect { |key, value| "#{key}=#{value}" }.join(';') end |
#make_curl_command(url:) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/jirametrics/jira_gateway.rb', line 50 def make_curl_command url: command = +'' command << 'curl' command << ' -L' # follow redirects command << ' -s' # silent command << ' -k' if @ignore_ssl_errors # insecure command << " --cookie #{@cookies.inspect}" unless @cookies.empty? command << " --user #{@jira_email}:#{@jira_api_token}" if @jira_api_token command << " -H \"Authorization: Bearer #{@jira_personal_access_token}\"" if @jira_personal_access_token command << ' --request GET' command << ' --header "Accept: application/json"' command << " --url \"#{url}\"" command end |