Class: JIRA::Client

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/jira/client.rb

Overview

This class is the main access point for all JIRA::Resource instances.

The client must be initialized with an options hash containing configuration options. The available options are:

:site               => 'http://localhost:2990',
:context_path       => '/jira',
:signature_method   => 'RSA-SHA1',
:request_token_path => "/plugins/servlet/oauth/request-token",
:authorize_path     => "/plugins/servlet/oauth/authorize",
:access_token_path  => "/plugins/servlet/oauth/access-token",
:private_key_file   => "rsakey.pem",
:rest_base_path     => "/rest/api/2",
:consumer_key       => nil,
:consumer_secret    => nil,
:ssl_verify_mode    => OpenSSL::SSL::VERIFY_PEER,
:use_ssl            => true,
:username           => nil,
:password           => nil,
:auth_type          => :oauth,
:proxy_address      => nil,
:proxy_port         => nil,
:additional_cookies => nil

See the JIRA::Base class methods for all of the available methods on these accessor objects.

Constant Summary collapse

DEFAULT_OPTIONS =
{
  :site               => 'http://localhost:2990',
  :context_path       => '/jira',
  :rest_base_path     => "/rest/api/2",
  :ssl_verify_mode    => OpenSSL::SSL::VERIFY_PEER,
  :use_ssl            => true,
  :auth_type          => :oauth,
  :http_debug         => false
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Client

Returns a new instance of Client.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/jira/client.rb', line 59

def initialize(options={})
  options = DEFAULT_OPTIONS.merge(options)
  @options = options
  @options[:rest_base_path] = @options[:context_path] + @options[:rest_base_path]

  case options[:auth_type]
  when :oauth
    @request_client = OauthClient.new(@options)
    @consumer = @request_client.consumer
  when :basic
    @request_client = HttpClient.new(@options)
  when :cookie
    raise ArgumentError, 'Options: :use_cookies must be true for :cookie authorization type' if @options.key?(:use_cookies) && !@options[:use_cookies]
    @options[:use_cookies] = true
    @request_client = HttpClient.new(@options)
    @request_client.make_cookie_auth_request
    @options.delete(:username)
    @options.delete(:password)
  else
    raise ArgumentError, 'Options: ":auth_type" must be ":oauth", ":cookie" or ":basic"'
  end

  @http_debug = @options[:http_debug]

  @options.freeze

  @cache = OpenStruct.new
end

Instance Attribute Details

#cacheObject

The OAuth::Consumer instance returned by the OauthClient

The authenticated client instance returned by the respective client type (Oauth, Basic)



42
43
44
# File 'lib/jira/client.rb', line 42

def cache
  @cache
end

#consumerObject

The OAuth::Consumer instance returned by the OauthClient

The authenticated client instance returned by the respective client type (Oauth, Basic)



42
43
44
# File 'lib/jira/client.rb', line 42

def consumer
  @consumer
end

#http_debugObject

The OAuth::Consumer instance returned by the OauthClient

The authenticated client instance returned by the respective client type (Oauth, Basic)



42
43
44
# File 'lib/jira/client.rb', line 42

def http_debug
  @http_debug
end

#optionsObject (readonly)

The configuration options for this client instance



45
46
47
# File 'lib/jira/client.rb', line 45

def options
  @options
end

#request_clientObject

The OAuth::Consumer instance returned by the OauthClient

The authenticated client instance returned by the respective client type (Oauth, Basic)



42
43
44
# File 'lib/jira/client.rb', line 42

def request_client
  @request_client
end

Instance Method Details

#AgileObject



188
189
190
# File 'lib/jira/client.rb', line 188

def Agile
  JIRA::Resource::AgileFactory.new(self)
end


160
161
162
# File 'lib/jira/client.rb', line 160

def ApplicationLink
  JIRA::Resource::ApplicationLinkFactory.new(self)
end

#AttachmentObject

:nodoc:



128
129
130
# File 'lib/jira/client.rb', line 128

def Attachment # :nodoc:
  JIRA::Resource::AttachmentFactory.new(self)
end

#CommentObject

:nodoc:



124
125
126
# File 'lib/jira/client.rb', line 124

def Comment # :nodoc:
  JIRA::Resource::CommentFactory.new(self)
end

#ComponentObject

:nodoc:



100
101
102
# File 'lib/jira/client.rb', line 100

def Component # :nodoc:
  JIRA::Resource::ComponentFactory.new(self)
end

#CreatemetaObject



156
157
158
# File 'lib/jira/client.rb', line 156

def Createmeta
  JIRA::Resource::CreatemetaFactory.new(self)
end

#delete(path, headers = {}) ⇒ Object

HTTP methods without a body



193
194
195
# File 'lib/jira/client.rb', line 193

def delete(path, headers = {})
  request(:delete, path, nil, merge_default_headers(headers))
end

#FieldObject

:nodoc:



144
145
146
# File 'lib/jira/client.rb', line 144

def Field # :nodoc:
  JIRA::Resource::FieldFactory.new(self)
end

#FilterObject

:nodoc:



96
97
98
# File 'lib/jira/client.rb', line 96

def Filter # :nodoc:
  JIRA::Resource::FilterFactory.new(self)
end

#get(path, headers = {}) ⇒ Object



197
198
199
# File 'lib/jira/client.rb', line 197

def get(path, headers = {})
  request(:get, path, nil, merge_default_headers(headers))
end

#head(path, headers = {}) ⇒ Object



201
202
203
# File 'lib/jira/client.rb', line 201

def head(path, headers = {})
  request(:head, path, nil, merge_default_headers(headers))
end

#IssueObject

:nodoc:



92
93
94
# File 'lib/jira/client.rb', line 92

def Issue # :nodoc:
  JIRA::Resource::IssueFactory.new(self)
end


172
173
174
# File 'lib/jira/client.rb', line 172

def Issuelink
  JIRA::Resource::IssuelinkFactory.new(self)
end

#IssuelinktypeObject



176
177
178
# File 'lib/jira/client.rb', line 176

def Issuelinktype
  JIRA::Resource::IssuelinktypeFactory.new(self)
end

#IssuetypeObject

:nodoc:



108
109
110
# File 'lib/jira/client.rb', line 108

def Issuetype # :nodoc:
  JIRA::Resource::IssuetypeFactory.new(self)
end

#post(path, body = '', headers = {}) ⇒ Object

HTTP methods with a body



206
207
208
209
# File 'lib/jira/client.rb', line 206

def post(path, body = '', headers = {})
  headers = {'Content-Type' => 'application/json'}.merge(headers)
  request(:post, path, body, merge_default_headers(headers))
end

#PriorityObject

:nodoc:



112
113
114
# File 'lib/jira/client.rb', line 112

def Priority # :nodoc:
  JIRA::Resource::PriorityFactory.new(self)
end

#ProjectObject

:nodoc:



88
89
90
# File 'lib/jira/client.rb', line 88

def Project # :nodoc:
  JIRA::Resource::ProjectFactory.new(self)
end

#put(path, body = '', headers = {}) ⇒ Object



211
212
213
214
# File 'lib/jira/client.rb', line 211

def put(path, body = '', headers = {})
  headers = {'Content-Type' => 'application/json'}.merge(headers)
  request(:put, path, body, merge_default_headers(headers))
end

#RapidViewObject



148
149
150
# File 'lib/jira/client.rb', line 148

def RapidView
  JIRA::Resource::RapidViewFactory.new(self)
end


180
181
182
# File 'lib/jira/client.rb', line 180

def Remotelink
  JIRA::Resource::RemotelinkFactory.new(self)
end

#request(http_method, path, body = '', headers = {}) ⇒ Object

Sends the specified HTTP request to the REST API through the appropriate method (oauth, basic).



218
219
220
221
# File 'lib/jira/client.rb', line 218

def request(http_method, path, body = '', headers={})
  puts "#{http_method}: #{path} - [#{body}]" if @http_debug
  @request_client.request(http_method, path, body, headers)
end

#ResolutionObject

:nodoc:



120
121
122
# File 'lib/jira/client.rb', line 120

def Resolution # :nodoc:
  JIRA::Resource::ResolutionFactory.new(self)
end

#ServerInfoObject



152
153
154
# File 'lib/jira/client.rb', line 152

def ServerInfo
  JIRA::Resource::ServerInfoFactory.new(self)
end

#SprintObject



184
185
186
# File 'lib/jira/client.rb', line 184

def Sprint
  JIRA::Resource::SprintFactory.new(self)
end

#StatusObject

:nodoc:



116
117
118
# File 'lib/jira/client.rb', line 116

def Status # :nodoc:
  JIRA::Resource::StatusFactory.new(self)
end

#TransitionObject

:nodoc:



140
141
142
# File 'lib/jira/client.rb', line 140

def Transition # :nodoc:
  JIRA::Resource::TransitionFactory.new(self)
end

#UserObject

:nodoc:



104
105
106
# File 'lib/jira/client.rb', line 104

def User # :nodoc:
  JIRA::Resource::UserFactory.new(self)
end

#VersionObject

:nodoc:



136
137
138
# File 'lib/jira/client.rb', line 136

def Version # :nodoc:
  JIRA::Resource::VersionFactory.new(self)
end

#WatcherObject



164
165
166
# File 'lib/jira/client.rb', line 164

def Watcher
  JIRA::Resource::WatcherFactory.new(self)
end

#WebhookObject



168
169
170
# File 'lib/jira/client.rb', line 168

def Webhook
  JIRA::Resource::WebhookFactory.new(self)
end

#WorklogObject

:nodoc:



132
133
134
# File 'lib/jira/client.rb', line 132

def Worklog # :nodoc:
  JIRA::Resource::WorklogFactory.new(self)
end