Class: Jigit::JiraAPIClient

Inherits:
Object
  • Object
show all
Defined in:
lib/jigit/jira/jira_api_client.rb

Instance Method Summary collapse

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.message}"
  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.message}"
  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_statusesObject



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.message}"
rescue JIRA::HTTPError => exception
  raise Jigit::JiraAPIClientError, "Can not fetch a JIRA statuses: #{exception.response.body}"
end

#jira_clientObject



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
  options = {
        username: @config.user,
        password: @config.password,
        site: "https://#{@config.host}",
        context_path: "",
        auth_type: :basic
      }
  @jira_client ||= JIRA::Client.new(options)
end

#validate_api?Boolean

Returns:

  • (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.message}"
rescue JIRA::HTTPError => exception
  raise Jigit::JiraAPIClientError, "Can not fetch Jira server info: #{exception.message}"
end