Class: Jigit::JiraAPIClient
- Inherits:
-
Object
- Object
- Jigit::JiraAPIClient
- Defined in:
- lib/jigit/jira/jira_api_client.rb
Instance Method Summary collapse
- #fetch_issue_transitions(issue) ⇒ Object
- #fetch_jira_issue(issue_name) ⇒ Object
- #fetch_jira_statuses ⇒ Object
-
#initialize(config, jira_client = nil) ⇒ JiraAPIClient
constructor
A new instance of JiraAPIClient.
- #jira_client ⇒ Object
- #validate_api? ⇒ Boolean
Constructor Details
#initialize(config, jira_client = nil) ⇒ JiraAPIClient
Returns a new instance of JiraAPIClient.
9 10 11 12 13 |
# File 'lib/jigit/jira/jira_api_client.rb', line 9 def initialize(config, jira_client = nil) raise "Config must not be nil to use JiraHelper" unless config @config = config @jira_client = jira_client end |
Instance Method Details
#fetch_issue_transitions(issue) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/jigit/jira/jira_api_client.rb', line 36 def fetch_issue_transitions(issue) raise "Can not fetch a JIRA issue's transitions without issue name" unless issue.jira_ruby_issue begin transitions = jira_client.Transition.all(issue: issue.jira_ruby_issue) return nil unless transitions transitions.map do |transition| Jigit::JiraTransition.new(transition) end rescue SocketError => exception raise Jigit::NetworkError, "Can not fetch JIRA issue transitions: #{exception.}" rescue JIRA::HTTPError => exception raise Jigit::JiraAPIClientError, "Can not fetch JIRA issue transitions: #{exception.response.body}" end end |
#fetch_jira_issue(issue_name) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/jigit/jira/jira_api_client.rb', line 51 def fetch_jira_issue(issue_name) raise "Can not fetch a JIRA issue without issue name" unless issue_name begin issue = jira_client.Issue.jql("key = #{issue_name}").first return nil unless issue Jigit::JiraIssue.new(issue) rescue SocketError => exception raise Jigit::NetworkError, "Can not fetch a JIRA issue: #{exception.}" rescue JIRA::HTTPError => exception error = case exception.response.code when "400" then Jigit::JiraInvalidIssueKeyError else Jigit::JiraAPIClientError end raise error, "Can not fetch a JIRA issue: #{exception.response.body}" end end |
#fetch_jira_statuses ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/jigit/jira/jira_api_client.rb', line 68 def fetch_jira_statuses statuses = jira_client.Status.all return nil unless statuses statuses.map do |status| Jigit::JiraStatus.new(status) end rescue SocketError => exception raise Jigit::NetworkError, "Can not fetch a JIRA statuses: #{exception.}" rescue JIRA::HTTPError => exception raise Jigit::JiraAPIClientError, "Can not fetch a JIRA statuses: #{exception.response.body}" end |
#jira_client ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/jigit/jira/jira_api_client.rb', line 15 def jira_client return @jira_client if @jira_client = { username: @config.user, password: @config.password, site: "https://#{@config.host}", context_path: "", auth_type: :basic } @jira_client ||= JIRA::Client.new() end |
#validate_api? ⇒ Boolean
27 28 29 30 31 32 33 34 |
# File 'lib/jigit/jira/jira_api_client.rb', line 27 def validate_api? serverinfo = jira_client.ServerInfo.all return !serverinfo.nil? rescue SocketError => exception raise Jigit::NetworkError, "Can not fetch Jira server info: #{exception.}" rescue JIRA::HTTPError => exception raise Jigit::JiraAPIClientError, "Can not fetch Jira server info: #{exception.}" end |