rally_api 0.7.0 → 0.7.1
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.
- data/README.rdoc +5 -0
- data/lib/rally_api/custom_http_header.rb +12 -2
- data/lib/rally_api/rally_json_connection.rb +17 -1
- data/lib/rally_api/rally_object.rb +14 -2
- data/lib/rally_api/rally_rest_json.rb +18 -5
- data/lib/rally_api/version.rb +1 -1
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -18,6 +18,9 @@ RallyAPI is a wrapper of Rally's Web Service API Json endpoints using rest-clien
|
|
18
18
|
headers.vendor = "MyCompany"
|
19
19
|
headers.version = "1.0"
|
20
20
|
|
21
|
+
#or one line custom header
|
22
|
+
headers = RallyAPI::CustomHttpHeader.new({:vendor => "Vendor", :name => "Custom Name", :version => "1.0"})
|
23
|
+
|
21
24
|
config = {:base_url => "https://rally1.rallydev.com/slm"}
|
22
25
|
config[:username] = "user@company.com"
|
23
26
|
config[:password] = "password"
|
@@ -105,6 +108,8 @@ RallyAPI is a wrapper of Rally's Web Service API Json endpoints using rest-clien
|
|
105
108
|
#re-ranking: rank_above and rank_below
|
106
109
|
story1.rank_above(story2) #in a drag and drop workspace move story1 relative to story2
|
107
110
|
story1.rank_below(story2)
|
111
|
+
story1.rank_to_bottom
|
112
|
+
story1.rank_to_top
|
108
113
|
|
109
114
|
== License/Meta
|
110
115
|
Released under the MIT License: http://www.opensource.org/licenses/mit-license.php
|
@@ -5,6 +5,10 @@
|
|
5
5
|
|
6
6
|
require_relative "version"
|
7
7
|
|
8
|
+
#custom headers help Rally identify the integration you have written
|
9
|
+
# You can make custom headers by:
|
10
|
+
# ch = RallyAPI::CustomHttpHeader.new({:name => "CustomRoobyTool", :vendor => "acme inc", :version => "1.0"})
|
11
|
+
# or by calling with no hash in the arguments and setting ch.name, ch.vendor, and ch.version
|
8
12
|
module RallyAPI
|
9
13
|
|
10
14
|
class CustomHttpHeader
|
@@ -14,11 +18,17 @@ module RallyAPI
|
|
14
18
|
HTTP_HEADER_FIELDS = [:name, :vendor, :version, :library, :platform, :os]
|
15
19
|
HTTP_HEADER_PREFIX = 'X-RallyIntegration'
|
16
20
|
|
17
|
-
def initialize
|
21
|
+
def initialize(custom_vals = {})
|
18
22
|
@os = RUBY_PLATFORM
|
19
23
|
@platform = "Ruby #{RUBY_VERSION}"
|
20
|
-
@library = "RallyRestJson version #{VERSION}"
|
24
|
+
@library = "RallyRestJson version #{RallyAPI::VERSION}"
|
21
25
|
@name = "RallyRestJson"
|
26
|
+
|
27
|
+
if custom_vals.keys.length > 0
|
28
|
+
@name = custom_vals[:name]
|
29
|
+
@version = custom_vals[:version]
|
30
|
+
@vendor = custom_vals[:vendor]
|
31
|
+
end
|
22
32
|
end
|
23
33
|
|
24
34
|
def headers
|
@@ -16,6 +16,7 @@ module RallyAPI
|
|
16
16
|
DEFAULT_PAGE_SIZE = 200
|
17
17
|
|
18
18
|
attr_accessor :rally_headers, :low_debug, :logger
|
19
|
+
attr_reader :find_threads, :rally_http_client
|
19
20
|
|
20
21
|
def initialize(headers, low_debug, proxy_info)
|
21
22
|
@rally_headers = headers
|
@@ -25,6 +26,7 @@ module RallyAPI
|
|
25
26
|
@rally_http_client = HTTPClient.new
|
26
27
|
@rally_http_client.receive_timeout = 300
|
27
28
|
@rally_http_client.send_timeout = 300
|
29
|
+
@rally_http_client.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
28
30
|
@rally_http_client.transparent_gzip_decompression = true
|
29
31
|
|
30
32
|
#passed in proxy setup overrides env level proxy
|
@@ -33,12 +35,26 @@ module RallyAPI
|
|
33
35
|
@rally_http_client.proxy = env_proxy
|
34
36
|
end
|
35
37
|
@rally_http_client.proxy = proxy_info unless !proxy_info.nil?
|
38
|
+
|
39
|
+
@find_threads = 4
|
36
40
|
end
|
37
41
|
|
38
42
|
def set_client_user(base_url, user, password)
|
39
43
|
@rally_http_client.set_basic_auth(base_url, user, password)
|
40
44
|
end
|
41
45
|
|
46
|
+
def set_ssl_verify_mode(mode = OpenSSL::SSL::VERIFY_NONE)
|
47
|
+
@rally_http_client.ssl_config.verify_mode = mode
|
48
|
+
end
|
49
|
+
|
50
|
+
#you can have any number you want as long as it is between 1 and 4
|
51
|
+
def set_find_threads(num_threads = 2)
|
52
|
+
return if num_threads.class != Fixnum
|
53
|
+
num_threads = 4 if num_threads > 4
|
54
|
+
num_threads = 1 if num_threads < 1
|
55
|
+
@find_threads = num_threads
|
56
|
+
end
|
57
|
+
|
42
58
|
def get_all_json_results(url, args, query_params, limit = 99999)
|
43
59
|
all_results = []
|
44
60
|
args[:method] = :get
|
@@ -104,7 +120,7 @@ module RallyAPI
|
|
104
120
|
private
|
105
121
|
|
106
122
|
def run_threads(query_array)
|
107
|
-
num_threads =
|
123
|
+
num_threads = @find_threads
|
108
124
|
thr_queries = []
|
109
125
|
(0...num_threads).each { |ind| thr_queries[ind] = [] }
|
110
126
|
query_array.each { |query| thr_queries[query[:page_num] % num_threads].push(query) }
|
@@ -54,11 +54,23 @@ module RallyAPI
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def rank_above(relative_rally_object)
|
57
|
-
@rally_rest.rank_above(@rally_object["_ref"],relative_rally_object["_ref"])
|
57
|
+
@rally_object = @rally_rest.rank_above(@rally_object["_ref"],relative_rally_object["_ref"]).rally_object
|
58
|
+
self
|
58
59
|
end
|
59
60
|
|
60
61
|
def rank_below(relative_rally_object)
|
61
|
-
@rally_rest.rank_below(@rally_object["_ref"],relative_rally_object["_ref"])
|
62
|
+
@rally_object = @rally_rest.rank_below(@rally_object["_ref"],relative_rally_object["_ref"]).rally_object
|
63
|
+
self
|
64
|
+
end
|
65
|
+
|
66
|
+
def rank_to_bottom
|
67
|
+
@rally_object = @rally_rest.rank_to(@rally_object["_ref"], "BOTTOM").rally_object
|
68
|
+
self
|
69
|
+
end
|
70
|
+
|
71
|
+
def rank_to_top
|
72
|
+
@rally_object = @rally_rest.rank_to(@rally_object["_ref"], "TOP").rally_object
|
73
|
+
self
|
62
74
|
end
|
63
75
|
|
64
76
|
def delete()
|
@@ -47,10 +47,10 @@ module RallyAPI
|
|
47
47
|
DEFAULT_WSAPI_VERSION = "1.37"
|
48
48
|
|
49
49
|
attr_accessor :rally_url, :rally_user, :rally_password, :rally_workspace_name, :rally_project_name, :wsapi_version
|
50
|
-
attr_accessor :rally_headers, :rally_default_workspace, :rally_default_project, :low_debug, :proxy_info
|
50
|
+
attr_accessor :rally_headers, :rally_default_workspace, :rally_default_project, :low_debug, :proxy_info
|
51
51
|
attr_accessor :rally_rest_api_compat, :logger
|
52
52
|
|
53
|
-
attr_reader :rally_objects
|
53
|
+
attr_reader :rally_connection, :rally_objects
|
54
54
|
|
55
55
|
def initialize(args)
|
56
56
|
@rally_url = args[:base_url] || "https://rally1.rallydev.com/slm"
|
@@ -61,7 +61,7 @@ module RallyAPI
|
|
61
61
|
@wsapi_version = args[:version] || DEFAULT_WSAPI_VERSION
|
62
62
|
@rally_headers = args[:headers] || CustomHttpHeader.new
|
63
63
|
@proxy_info = args[:proxy]
|
64
|
-
|
64
|
+
|
65
65
|
@rally_rest_api_compat = args[:rally_rest_api_compat] || false
|
66
66
|
|
67
67
|
@low_debug = args[:debug] || false
|
@@ -70,7 +70,6 @@ module RallyAPI
|
|
70
70
|
@rally_connection = RallyJsonConnection.new(@rally_headers, @low_debug, @proxy_info)
|
71
71
|
@rally_connection.set_client_user(@rally_url, @rally_user, @rally_password)
|
72
72
|
@rally_connection.logger = @logger unless @logger.nil?
|
73
|
-
@rally_connection.retries = @retries if @retries > 0
|
74
73
|
|
75
74
|
@rally_objects = { :typedefinition => "TypeDefinition" }
|
76
75
|
cache_rally_objects()
|
@@ -233,6 +232,10 @@ module RallyAPI
|
|
233
232
|
RallyQueryResult.new(self, json_response)
|
234
233
|
end
|
235
234
|
|
235
|
+
def adjust_find_threads(num_threads)
|
236
|
+
@rally_connection.set_find_threads(num_threads)
|
237
|
+
end
|
238
|
+
|
236
239
|
#rankAbove=%2Fhierarchicalrequirement%2F4624552599
|
237
240
|
#{"hierarchicalrequirement":{"_ref":"https://rally1.rallydev.com/slm/webservice/1.27/hierarchicalrequirement/4616818613.js"}}
|
238
241
|
def rank_above(ref_to_rank, relative_ref)
|
@@ -255,7 +258,17 @@ module RallyAPI
|
|
255
258
|
params[:fetch] = "true"
|
256
259
|
json_update = { get_type_from_ref(ref_to_rank) => {"_ref" => ref_to_rank} }
|
257
260
|
args = { :method => :put, :payload => json_update }
|
258
|
-
|
261
|
+
update = @rally_connection.send_request(ref, args, params)
|
262
|
+
RallyObject.new(self, update["OperationResult"]["Object"])
|
263
|
+
end
|
264
|
+
|
265
|
+
def rank_to(ref_to_rank, location = "TOP")
|
266
|
+
ref = ref_to_rank
|
267
|
+
params = {}
|
268
|
+
params[:rankTo] = location
|
269
|
+
params[:fetch] = "true"
|
270
|
+
json_update = { get_type_from_ref(ref_to_rank) => {"_ref" => ref_to_rank} }
|
271
|
+
args = { :method => :put, :payload => json_update }
|
259
272
|
update = @rally_connection.send_request(ref, args, params)
|
260
273
|
RallyObject.new(self, update["OperationResult"]["Object"])
|
261
274
|
end
|
data/lib/rally_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rally_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-14 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httpclient
|
16
|
-
requirement: &
|
16
|
+
requirement: &70242928975180 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 2.2.4
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70242928975180
|
25
25
|
description: API wrapper for Rally's JSON REST web services api
|
26
26
|
email:
|
27
27
|
- dsmith@rallydev.com
|