Class: Aireview::JiraClient
- Inherits:
-
Object
- Object
- Aireview::JiraClient
- Defined in:
- lib/aireview/jira_client.rb
Constant Summary collapse
- ISSUE_KEY =
/\b([A-Z][A-Z0-9]+-\d+)\b/- OPEN_TIMEOUT =
10- READ_TIMEOUT =
30
Class Method Summary collapse
Instance Method Summary collapse
- #fetch_issue(key) ⇒ Object
-
#initialize(base_url:, login:, password:, logger: Logger.new($stderr)) ⇒ JiraClient
constructor
A new instance of JiraClient.
Constructor Details
#initialize(base_url:, login:, password:, logger: Logger.new($stderr)) ⇒ JiraClient
Returns a new instance of JiraClient.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/aireview/jira_client.rb', line 17 def initialize(base_url:, login:, password:, logger: Logger.new($stderr)) require 'faraday' raise ConfigError, 'Jira base URL is required' if Aireview::Utils.blank?(base_url) raise ConfigError, 'Jira login is required' if Aireview::Utils.blank?(login) raise ConfigError, 'Jira password is required' if Aireview::Utils.blank?(password) @logger = logger @connection = Faraday.new(url: base_url) do |builder| builder.request :json builder..open_timeout = OPEN_TIMEOUT builder..timeout = READ_TIMEOUT builder.adapter Faraday.default_adapter end = "Basic #{Base64.strict_encode64("#{login}:#{password}")}" end |
Class Method Details
.extract_issue_key(text) ⇒ Object
12 13 14 15 |
# File 'lib/aireview/jira_client.rb', line 12 def self.extract_issue_key(text) match = ISSUE_KEY.match(text.to_s) match && match[1] end |
Instance Method Details
#fetch_issue(key) ⇒ Object
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/aireview/jira_client.rb', line 34 def fetch_issue(key) payload = get_json("/rest/api/2/issue/#{key}", fields: 'summary,description,comment') { 'key' => payload['key'], 'summary' => payload.dig('fields', 'summary'), 'description' => plain_text(payload.dig('fields', 'description')), 'comments' => extract_comments(payload.dig('fields', 'comment', 'comments')) } end |