jira-ruby 0.1.17 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +2 -1
- data/Gemfile +3 -1
- data/Guardfile +14 -0
- data/README.rdoc +29 -12
- data/Rakefile +5 -1
- data/example.rb +24 -2
- data/http-basic-example.rb +1 -1
- data/jira-ruby.gemspec +20 -14
- data/lib/{jira.rb → jira-ruby.rb} +6 -2
- data/lib/jira/base.rb +5 -4
- data/lib/jira/base_factory.rb +3 -3
- data/lib/jira/client.rb +31 -2
- data/lib/jira/resource/agile.rb +54 -0
- data/lib/jira/resource/createmeta.rb +52 -0
- data/lib/jira/resource/field.rb +74 -1
- data/lib/jira/resource/issue.rb +22 -5
- data/lib/jira/resource/resolution.rb +10 -0
- data/lib/jira/resource/sprint.rb +36 -0
- data/lib/jira/resource/user.rb +6 -0
- data/lib/jira/resource/webhook.rb +40 -0
- data/lib/jira/version.rb +1 -1
- data/spec/integration/resolution_spec.rb +29 -0
- data/spec/integration/webhook.rb +34 -0
- data/spec/jira/base_spec.rb +5 -2
- data/spec/jira/resource/createmeta_spec.rb +253 -0
- data/spec/jira/resource/field_spec.rb +132 -0
- data/spec/jira/resource/issue_spec.rb +21 -1
- data/spec/jira/resource/user_factory_spec.rb +33 -0
- data/spec/mock_responses/jira/rest/webhooks/1.0/webhook.json +11 -0
- data/spec/mock_responses/jira/rest/webhooks/1.0/webhook/2.json +11 -0
- data/spec/mock_responses/resolution.json +15 -0
- data/spec/mock_responses/resolution/1.json +7 -0
- data/spec/mock_responses/webhook.json +11 -0
- data/spec/mock_responses/webhook/webhook.json +11 -0
- data/spec/spec_helper.rb +1 -1
- metadata +139 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb639c7a6da1d81ae6bb693c5891ee23ce1b1e9c
|
4
|
+
data.tar.gz: 331cd7e819faa9cc056045413d968793a238baa9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8e856bf2af0be3d9b40b300167117c263c6ffda85fb70001c7fd3c2c59b05eab6561ac2f684786175dcf707d6b5ab9a606b92a17a3278cde73f119fb047d4ff
|
7
|
+
data.tar.gz: cc19f33cb2c9455045ff0f1d8368a639963dee01c3c313a39e6e49b026d354dd8f0ef2586773b8153b78c51868466bafbd452aac77ba2641c4f697fd22e6d9d0
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Guardfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
gem 'wdm', '>= 0.1.0' if Gem.win_platform?
|
2
|
+
gem 'rspec', '~> 3.0.0'
|
3
|
+
|
4
|
+
guard 'rspec', cmd: 'bundle exec rspec --color --format doc' do
|
5
|
+
# watch /lib/ files
|
6
|
+
watch(%r{^lib/(.+).rb$}) do |m|
|
7
|
+
"spec/#{m[1]}_spec.rb"
|
8
|
+
end
|
9
|
+
|
10
|
+
# watch /spec/ files
|
11
|
+
watch(%r{^spec/(.+).rb$}) do |m|
|
12
|
+
"spec/#{m[1]}.rb"
|
13
|
+
end
|
14
|
+
end
|
data/README.rdoc
CHANGED
@@ -6,7 +6,18 @@ This gem provides access to the Atlassian JIRA REST API.
|
|
6
6
|
|
7
7
|
== Example usage
|
8
8
|
|
9
|
-
|
9
|
+
require 'rubygems'
|
10
|
+
require 'jira-ruby'
|
11
|
+
|
12
|
+
options = {
|
13
|
+
:username => 'username',
|
14
|
+
:password => 'pass1234',
|
15
|
+
:site => 'http://mydomain.atlassian.net:443/',
|
16
|
+
:context_path => '',
|
17
|
+
:auth_type => :basic
|
18
|
+
}
|
19
|
+
|
20
|
+
client = JIRA::Client.new(options)
|
10
21
|
|
11
22
|
project = client.Project.find('SAMPLEPROJECT')
|
12
23
|
|
@@ -14,17 +25,18 @@ This gem provides access to the Atlassian JIRA REST API.
|
|
14
25
|
puts "#{issue.id} - #{issue.summary}"
|
15
26
|
end
|
16
27
|
|
17
|
-
issue.comments.each {|comment| ... }
|
18
|
-
|
19
|
-
comment = issue.comments.build
|
20
|
-
comment.save({'body':'My new comment'})
|
21
|
-
comment.delete
|
22
|
-
|
23
28
|
== Links to JIRA REST API documentation
|
24
29
|
|
25
30
|
* {Overview}[https://developer.atlassian.com/display/JIRADEV/JIRA+REST+APIs]
|
26
31
|
* {Reference}[http://docs.atlassian.com/jira/REST/latest/]
|
27
32
|
|
33
|
+
== Running tests
|
34
|
+
|
35
|
+
Before running tests, you will need a public certificate generated.
|
36
|
+
|
37
|
+
```
|
38
|
+
rake jira:generate_public_cert
|
39
|
+
```
|
28
40
|
|
29
41
|
== Setting up the JIRA SDK
|
30
42
|
|
@@ -76,9 +88,13 @@ defaults to HTTP Basic Auth.
|
|
76
88
|
Using HTTP Basic Authentication, configure and connect a client to your instance
|
77
89
|
of JIRA.
|
78
90
|
|
91
|
+
Note: If your Jira install is hosted on {atlassian.net}[atlassian.net], it will have no context
|
92
|
+
path by default. If you're having issues connecting, try setting context_path
|
93
|
+
to an empty string in the options hash.
|
94
|
+
|
79
95
|
require 'rubygems'
|
80
96
|
require 'pp'
|
81
|
-
require 'jira'
|
97
|
+
require 'jira-ruby'
|
82
98
|
|
83
99
|
# Consider the use of :use_ssl and :ssl_verify_mode options if running locally
|
84
100
|
# for tests.
|
@@ -119,7 +135,7 @@ Ensure the JIRA gem is loaded correctly
|
|
119
135
|
|
120
136
|
# Gemfile
|
121
137
|
...
|
122
|
-
gem 'jira-ruby', :require => 'jira'
|
138
|
+
gem 'jira-ruby', :require => 'jira-ruby'
|
123
139
|
...
|
124
140
|
|
125
141
|
Add common methods to your application controller and ensure access token
|
@@ -214,7 +230,7 @@ Create your own controllers for the JIRA resources you wish to access.
|
|
214
230
|
|
215
231
|
Here's the same example as a Sinatra application:
|
216
232
|
|
217
|
-
require 'jira'
|
233
|
+
require 'jira-ruby'
|
218
234
|
class App < Sinatra::Base
|
219
235
|
enable :sessions
|
220
236
|
|
@@ -273,7 +289,8 @@ Here's the same example as a Sinatra application:
|
|
273
289
|
# Initiates the OAuth dance by first requesting a token then redirecting to
|
274
290
|
# http://<yourserver>/auth to get the @access_token
|
275
291
|
get '/signin' do
|
276
|
-
|
292
|
+
callback_url = "#{request.base_url}/callback"
|
293
|
+
request_token = @jira_client.request_token(oauth_callback: callback_url)
|
277
294
|
session[:request_token] = request_token.token
|
278
295
|
session[:request_secret] = request_token.secret
|
279
296
|
|
@@ -283,7 +300,7 @@ Here's the same example as a Sinatra application:
|
|
283
300
|
# http://<yourserver>/callback
|
284
301
|
# Retrieves the @access_token then stores it inside a session cookie. In a real app,
|
285
302
|
# you'll want to persist the token in a datastore associated with the user.
|
286
|
-
get "/callback
|
303
|
+
get "/callback" do
|
287
304
|
request_token = @jira_client.set_request_token(
|
288
305
|
session[:request_token], session[:request_secret]
|
289
306
|
)
|
data/Rakefile
CHANGED
@@ -19,7 +19,11 @@ task :prepare do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
desc 'Run RSpec tests'
|
22
|
-
RSpec::Core::RakeTask.new(:spec)
|
22
|
+
#RSpec::Core::RakeTask.new(:spec)
|
23
|
+
RSpec::Core::RakeTask.new(:spec) do |task|
|
24
|
+
task.rspec_opts = ['--color', '--format', 'doc']
|
25
|
+
end
|
26
|
+
|
23
27
|
|
24
28
|
Rake::RDocTask.new(:doc) do |rd|
|
25
29
|
rd.main = 'README.rdoc'
|
data/example.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'pp'
|
2
|
-
require './lib/jira'
|
2
|
+
require './lib/jira-ruby'
|
3
3
|
|
4
4
|
CONSUMER_KEY = 'test'
|
5
5
|
SITE = 'https://test.jira.com'
|
@@ -42,6 +42,28 @@ end
|
|
42
42
|
issue = client.Issue.find('SAMPLEPROJECT-1')
|
43
43
|
pp issue
|
44
44
|
|
45
|
+
# # Handling fields by name, rather than by id
|
46
|
+
# # ------------------------------------------
|
47
|
+
# Cache the Field list from the server
|
48
|
+
client.Field.map_fields
|
49
|
+
# This allows use of friendlier names for custom fields
|
50
|
+
# Say that 'Special Field' is customfield_12345
|
51
|
+
# It becomes mapped to Special_Field which is usable as a method call
|
52
|
+
#
|
53
|
+
# Say that there is a second 'Special Field' is customfield_54321
|
54
|
+
# Names are deduplicated so the second 'Special Field' becomes Special_Field_54321
|
55
|
+
#
|
56
|
+
# Names are massaged to get rid of special characters, and spaces
|
57
|
+
# So 'Special & @ Field' becomes Special_____Field - not perfect, but usable
|
58
|
+
old_way = issue.customfield_12345
|
59
|
+
new_way = issue.Special_Field
|
60
|
+
(old_way == new_way) && puts 'much easier'
|
61
|
+
#
|
62
|
+
# Can also use this to specify fields to be returned in the response
|
63
|
+
client.Issue.jql(a_normal_jql_search, fields:[:Special_Field])
|
64
|
+
# Or you could always do it the old way - if you can remember the numbers...
|
65
|
+
client.Issue.jql(a_normal_jql_search, fields:['customfield_12345'])
|
66
|
+
|
45
67
|
# # Find a specific project by key
|
46
68
|
# # ------------------------------
|
47
69
|
# project = client.Project.find('SAMPLEPROJECT')
|
@@ -173,4 +195,4 @@ remote_link.save(
|
|
173
195
|
:title => issue_1.key,
|
174
196
|
}
|
175
197
|
}
|
176
|
-
)
|
198
|
+
)
|
data/http-basic-example.rb
CHANGED
data/jira-ruby.gemspec
CHANGED
@@ -1,27 +1,33 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path(
|
3
|
-
require
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
3
|
+
require 'jira/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
6
|
+
s.name = 'jira-ruby'
|
7
7
|
s.version = JIRA::VERSION
|
8
|
-
s.authors = [
|
9
|
-
s.homepage =
|
8
|
+
s.authors = ['SUMO Heavy Industries']
|
9
|
+
s.homepage = 'http://www.sumoheavy.com'
|
10
10
|
s.summary = %q{Ruby Gem for use with the Atlassian JIRA REST API}
|
11
11
|
s.description = %q{API for JIRA}
|
12
|
-
s.licenses = [
|
12
|
+
s.licenses = ['OSL-3.0']
|
13
13
|
|
14
|
-
s.rubyforge_project =
|
14
|
+
s.rubyforge_project = 'jira-ruby'
|
15
15
|
|
16
16
|
s.files = `git ls-files`.split("\n")
|
17
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
-
s.require_paths = [
|
19
|
+
s.require_paths = ['lib']
|
20
20
|
|
21
|
-
|
22
|
-
s.add_runtime_dependency
|
23
|
-
s.add_runtime_dependency
|
24
|
-
|
25
|
-
|
26
|
-
s.add_development_dependency
|
21
|
+
# Rubtime Dependencies
|
22
|
+
s.add_runtime_dependency 'oauth', '~> 0.5', '>= 0.5.0'
|
23
|
+
s.add_runtime_dependency 'activesupport', '~> 4.2', '>= 4.2.0'
|
24
|
+
|
25
|
+
# Development Dependencies
|
26
|
+
s.add_development_dependency 'railties', '~> 4.2', '>= 4.2.0'
|
27
|
+
s.add_development_dependency 'webmock', '~> 1.18', '>= 1.18.0'
|
28
|
+
s.add_development_dependency 'rspec', '~> 3.0', '>= 3.0.0'
|
29
|
+
s.add_development_dependency 'rake', '~> 10.3', '>= 10.3.2'
|
30
|
+
s.add_development_dependency 'guard', '~> 2.13', '>= 2.13.0'
|
31
|
+
s.add_development_dependency 'guard-rspec', '~> 4.6', '>= 4.6.5'
|
32
|
+
s.add_development_dependency 'pry', '~> 0.10', '>= 0.10.3'
|
27
33
|
end
|
@@ -2,7 +2,7 @@ $: << File.expand_path(File.dirname(__FILE__))
|
|
2
2
|
|
3
3
|
require 'active_support/inflector'
|
4
4
|
ActiveSupport::Inflector.inflections do |inflector|
|
5
|
-
inflector.singular
|
5
|
+
inflector.singular /status$/, 'status'
|
6
6
|
end
|
7
7
|
|
8
8
|
require 'jira/base'
|
@@ -29,8 +29,12 @@ require 'jira/resource/issue'
|
|
29
29
|
require 'jira/resource/filter'
|
30
30
|
require 'jira/resource/field'
|
31
31
|
require 'jira/resource/rapidview'
|
32
|
+
require 'jira/resource/resolution'
|
32
33
|
require 'jira/resource/serverinfo'
|
33
|
-
|
34
|
+
require 'jira/resource/createmeta'
|
35
|
+
require 'jira/resource/webhook'
|
36
|
+
require 'jira/resource/agile'
|
37
|
+
require 'jira/resource/sprint'
|
34
38
|
require 'jira/request_client'
|
35
39
|
require 'jira/oauth_client'
|
36
40
|
require 'jira/http_client'
|
data/lib/jira/base.rb
CHANGED
@@ -348,7 +348,7 @@ module JIRA
|
|
348
348
|
# JIRA::HTTPError if the request fails (response is not HTTP 2xx).
|
349
349
|
def save!(attrs)
|
350
350
|
http_method = new_record? ? :post : :put
|
351
|
-
response = client.send(http_method, url, attrs.to_json)
|
351
|
+
response = client.send(http_method, new_record? ? url : patched_url, attrs.to_json)
|
352
352
|
set_attrs(attrs, false)
|
353
353
|
set_attrs_from_response(response)
|
354
354
|
@expanded = false
|
@@ -439,6 +439,7 @@ module JIRA
|
|
439
439
|
end
|
440
440
|
|
441
441
|
# This method fixes issue that there is no / prefix in url. It is happened when we call for instance
|
442
|
+
# Looks like this issue is actual only in case if you use atlassian sdk your app path is not root (like /jira in example below)
|
442
443
|
# issue.save() for existing resource.
|
443
444
|
# As a result we got error 400 from JIRA API:
|
444
445
|
# [07/Jun/2015:15:32:19 +0400] "PUT jira/rest/api/2/issue/10111 HTTP/1.1" 400 -
|
@@ -446,7 +447,7 @@ module JIRA
|
|
446
447
|
# [07/Jun/2015:15:17:18 +0400] "PUT /jira/rest/api/2/issue/10111 HTTP/1.1" 204 -
|
447
448
|
def patched_url
|
448
449
|
result = url
|
449
|
-
result if result.start_with?('/')
|
450
|
+
return result if result.start_with?('/')
|
450
451
|
"/#{result}"
|
451
452
|
end
|
452
453
|
|
@@ -455,8 +456,8 @@ module JIRA
|
|
455
456
|
end
|
456
457
|
|
457
458
|
# Returns a JSON representation of the current attributes hash.
|
458
|
-
def to_json
|
459
|
-
attrs.to_json
|
459
|
+
def to_json(options = {})
|
460
|
+
attrs.to_json(options)
|
460
461
|
end
|
461
462
|
|
462
463
|
# Determines if the resource is newly created by checking whether its
|
data/lib/jira/base_factory.rb
CHANGED
@@ -15,7 +15,7 @@ module JIRA
|
|
15
15
|
# Need to do a little bit of work here as Module.const_get doesn't work
|
16
16
|
# with nested class names, i.e. JIRA::Resource::Foo.
|
17
17
|
#
|
18
|
-
# So create a method chain from the class
|
18
|
+
# So create a method chain from the class components. This code will
|
19
19
|
# unroll to:
|
20
20
|
# Module.const_get('JIRA').const_get('Resource').const_get('Foo')
|
21
21
|
#
|
@@ -35,10 +35,10 @@ module JIRA
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
# The
|
38
|
+
# The principle purpose of this class is to delegate methods to the corresponding
|
39
39
|
# non-factory class and automatically prepend the client argument to the argument
|
40
40
|
# list.
|
41
|
-
delegate_to_target_class :all, :find, :collection_path, :singular_path, :jql
|
41
|
+
delegate_to_target_class :all, :find, :collection_path, :singular_path, :jql, :get_backlog_issues, :get_sprints, :get_sprint_issues
|
42
42
|
|
43
43
|
# This method needs special handling as it has a default argument value
|
44
44
|
def build(attrs={})
|
data/lib/jira/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'forwardable'
|
3
|
+
require 'ostruct'
|
3
4
|
|
4
5
|
module JIRA
|
5
6
|
|
@@ -37,7 +38,7 @@ module JIRA
|
|
37
38
|
#
|
38
39
|
# The authenticated client instance returned by the respective client type
|
39
40
|
# (Oauth, Basic)
|
40
|
-
attr_accessor :consumer, :request_client
|
41
|
+
attr_accessor :consumer, :request_client, :http_debug, :cache
|
41
42
|
|
42
43
|
# The configuration options for this client instance
|
43
44
|
attr_reader :options
|
@@ -50,7 +51,8 @@ module JIRA
|
|
50
51
|
:rest_base_path => "/rest/api/2",
|
51
52
|
:ssl_verify_mode => OpenSSL::SSL::VERIFY_PEER,
|
52
53
|
:use_ssl => true,
|
53
|
-
:auth_type => :oauth
|
54
|
+
:auth_type => :oauth,
|
55
|
+
:http_debug => false
|
54
56
|
}
|
55
57
|
|
56
58
|
def initialize(options={})
|
@@ -64,9 +66,15 @@ module JIRA
|
|
64
66
|
@consumer = @request_client.consumer
|
65
67
|
when :basic
|
66
68
|
@request_client = HttpClient.new(@options)
|
69
|
+
else
|
70
|
+
raise ArgumentError, 'Options: ":auth_type" must be ":oauth" or ":basic"'
|
67
71
|
end
|
68
72
|
|
73
|
+
@http_debug = @options[:http_debug]
|
74
|
+
|
69
75
|
@options.freeze
|
76
|
+
|
77
|
+
@cache = OpenStruct.new
|
70
78
|
end
|
71
79
|
|
72
80
|
def Project # :nodoc:
|
@@ -101,6 +109,10 @@ module JIRA
|
|
101
109
|
JIRA::Resource::StatusFactory.new(self)
|
102
110
|
end
|
103
111
|
|
112
|
+
def Resolution # :nodoc:
|
113
|
+
JIRA::Resource::ResolutionFactory.new(self)
|
114
|
+
end
|
115
|
+
|
104
116
|
def Comment # :nodoc:
|
105
117
|
JIRA::Resource::CommentFactory.new(self)
|
106
118
|
end
|
@@ -133,10 +145,18 @@ module JIRA
|
|
133
145
|
JIRA::Resource::ServerInfoFactory.new(self)
|
134
146
|
end
|
135
147
|
|
148
|
+
def Createmeta
|
149
|
+
JIRA::Resource::CreatemetaFactory.new(self)
|
150
|
+
end
|
151
|
+
|
136
152
|
def ApplicationLink
|
137
153
|
JIRA::Resource::ApplicationLinkFactory.new(self)
|
138
154
|
end
|
139
155
|
|
156
|
+
def Webhook
|
157
|
+
JIRA::Resource::WebhookFactory.new(self)
|
158
|
+
end
|
159
|
+
|
140
160
|
def Issuelink
|
141
161
|
JIRA::Resource::IssuelinkFactory.new(self)
|
142
162
|
end
|
@@ -149,6 +169,14 @@ module JIRA
|
|
149
169
|
JIRA::Resource::RemotelinkFactory.new(self)
|
150
170
|
end
|
151
171
|
|
172
|
+
def Sprint
|
173
|
+
JIRA::Resource::SprintFactory.new(self)
|
174
|
+
end
|
175
|
+
|
176
|
+
def Agile
|
177
|
+
JIRA::Resource::AgileFactory.new(self)
|
178
|
+
end
|
179
|
+
|
152
180
|
# HTTP methods without a body
|
153
181
|
def delete(path, headers = {})
|
154
182
|
request(:delete, path, nil, merge_default_headers(headers))
|
@@ -176,6 +204,7 @@ module JIRA
|
|
176
204
|
# Sends the specified HTTP request to the REST API through the
|
177
205
|
# appropriate method (oauth, basic).
|
178
206
|
def request(http_method, path, body = '', headers={})
|
207
|
+
puts "#{http_method}: #{path} - [#{body}]" if @http_debug
|
179
208
|
@request_client.request(http_method, path, body, headers)
|
180
209
|
end
|
181
210
|
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
|
3
|
+
module JIRA
|
4
|
+
module Resource
|
5
|
+
|
6
|
+
class AgileFactory < JIRA::BaseFactory # :nodoc:
|
7
|
+
end
|
8
|
+
|
9
|
+
class Agile < JIRA::Base
|
10
|
+
|
11
|
+
def self.all(client)
|
12
|
+
response = client.get(path_base(client) + '/board')
|
13
|
+
parse_json(response.body)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.get_backlog_issues(client, board_id, options = {})
|
17
|
+
options[:maxResults] ||= 100
|
18
|
+
response = client.get("/rest/agile/1.0/board/#{board_id}/backlog?maxResults=#{options[:maxResults]}")
|
19
|
+
parse_json(response.body)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.get_sprints(client, board_id, options = {})
|
23
|
+
options[:maxResults] ||= 100
|
24
|
+
response = client.get("/rest/agile/1.0/board/#{board_id}/sprint?maxResults=#{options[:maxResults]}")
|
25
|
+
parse_json(response.body)
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.get_sprint_issues(client, sprint_id, options = {})
|
29
|
+
options[:maxResults] ||= 100
|
30
|
+
response = client.get("/rest/agile/1.0/sprint/#{sprint_id}/issue?maxResults=#{options[:maxResults]}")
|
31
|
+
parse_json(response.body)
|
32
|
+
end
|
33
|
+
|
34
|
+
# def self.find(client, key, options = {})
|
35
|
+
# options[:maxResults] ||= 100
|
36
|
+
# fields = options[:fields].join(',') unless options[:fields].nil?
|
37
|
+
# response = client.get("/rest/api/latest/search?jql=sprint=#{key}&fields=#{fields}&maxResults=#{options[:maxResults]}")
|
38
|
+
# parse_json(response.body)
|
39
|
+
# end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def self.path_base(client)
|
44
|
+
client.options[:context_path] + '/rest/agile/1.0'
|
45
|
+
end
|
46
|
+
|
47
|
+
def path_base(client)
|
48
|
+
self.class.path_base(client)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|