rally_rest_api 1.0.3 → 1.0.4

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.
@@ -4,6 +4,58 @@ require 'rexml/document'
4
4
  require 'rubygems'
5
5
  require 'builder'
6
6
 
7
+ # Intended to extend the Net::HTTP response object
8
+ # and adds support for decoding gzip and deflate encoded pages
9
+ #
10
+ # Author: Jason Stirk <http://griffin.oobleyboo.com>
11
+ # Home: http://griffin.oobleyboo.com/projects/http_encoding_helper
12
+ # Created: 5 September 2007
13
+ # Last Updated: 23 November 2007
14
+ #
15
+ # Usage:
16
+ #
17
+ # require 'net/http'
18
+ # require 'http_encoding_helper'
19
+ # headers={'Accept-Encoding' => 'gzip, deflate' }
20
+ # http = Net::HTTP.new('griffin.oobleyboo.com', 80)
21
+ # http.start do |h|
22
+ # request = Net::HTTP::Get.new('/', headers)
23
+ # response = http.request(request)
24
+ # content=response.plain_body # Method from our library
25
+ # puts "Transferred: #{response.body.length} bytes"
26
+ # puts "Compression: #{response['content-encoding']}"
27
+ # puts "Extracted: #{response.plain_body.length} bytes"
28
+ # end
29
+ #
30
+
31
+ require 'zlib'
32
+ require 'stringio'
33
+
34
+ class Net::HTTPResponse
35
+ # Return the uncompressed content
36
+ def plain_body
37
+ encoding=self['content-encoding']
38
+ content=nil
39
+ if encoding then
40
+ case encoding
41
+ when 'gzip'
42
+ i=Zlib::GzipReader.new(StringIO.new(self.body))
43
+ content=i.read
44
+ when 'deflate'
45
+ i=Zlib::Inflate.new
46
+ content=i.inflate(self.body)
47
+ else
48
+ raise "Unknown encoding - #{encoding}"
49
+ end
50
+ else
51
+ content=self.body
52
+ end
53
+ return content
54
+ end
55
+
56
+ end
57
+
58
+
7
59
  class RestBuilder # :nodoc:
8
60
 
9
61
  attr_reader :base_url, :username, :password, :http_headers
@@ -82,15 +134,20 @@ class RestBuilder # :nodoc:
82
134
  @http_headers.add_headers(req)
83
135
  req.basic_auth username, password
84
136
  req.content_type = 'text/xml'
137
+ req.add_field('Accept-Encoding', 'gzip, deflate')
85
138
  proxy = ENV['http_proxy'] ? URI.parse(ENV['http_proxy']) : OpenStruct.new
86
139
  http = Net::HTTP.new(url.host, url.port, proxy.host, proxy.port, proxy.user, proxy.password)
87
140
  http.use_ssl = true if url.scheme == "https"
88
141
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
142
+ http.read_timeout = 300
89
143
  debug "RestBuilder#send_request req = #{req.inspect} -- #{url}"
90
144
  response = http.start { |http| http.request(req) }
145
+ #debug "RestBuilder#send_request result = #{response.body}"
146
+ #check_for_errors(response)
147
+ #response.body
91
148
  debug "RestBuilder#send_request result = #{response.body}"
92
149
  check_for_errors(response)
93
- response.body
150
+ response.plain_body
94
151
  end
95
152
 
96
153
  def create_builder
@@ -104,7 +161,8 @@ class RestBuilder # :nodoc:
104
161
  when Net::HTTPUnauthorized
105
162
  raise Rally::NotAuthenticatedError.new("Invalid Username or Password.")
106
163
  else
107
- s = response.body
164
+ #s = response.body
165
+ s = response.plain_body
108
166
  document = REXML::Document.new s
109
167
  node = REXML::XPath.first document, '//Errors'
110
168
  raise node.to_s if node && node.has_elements?
@@ -211,3 +269,4 @@ class RestBuilder # :nodoc:
211
269
 
212
270
 
213
271
  end
272
+
@@ -2,7 +2,7 @@ module RallyRestVersion #:nodoc:
2
2
  module LIBRARY_VERSION #:nodoc:
3
3
  MAJOR = 1
4
4
  MINOR = 0
5
- TINY = 3
5
+ TINY = 4
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -49,7 +49,7 @@ describe "a RestBuilder " do
49
49
  it "should raise an error if the response contains an Error element" do
50
50
  body = "<xml><Errors><Error/></Errors></xml>"
51
51
  response = mock("response")
52
- response.should_receive(:body).and_return(body)
52
+ response.should_receive(:plain_body).and_return(body)
53
53
  lambda { @builder.check_for_errors(response) }.should raise_error(StandardError)
54
54
  end
55
55
 
@@ -3,7 +3,7 @@ app_path = File.expand_path("#{dir}/../lib")
3
3
  $LOAD_PATH.unshift app_path unless $LOAD_PATH.include?(app_path)
4
4
  require 'test/unit'
5
5
  require 'rubygems'
6
- require 'spec'
6
+ require 'rspec'
7
7
  require 'net/http'
8
8
  require 'rally_rest_api'
9
9
 
metadata CHANGED
@@ -1,35 +1,25 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rally_rest_api
3
- version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease: false
6
- segments:
7
- - 1
8
- - 0
9
- - 3
10
- version: 1.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.4
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Bob Cotton
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2010-09-17 00:00:00 -06:00
19
- default_executable:
12
+ date: 2012-10-09 00:00:00.000000000Z
20
13
  dependencies: []
21
-
22
- description: ""
14
+ description: ''
23
15
  email: bob.cotton@rallydev.com
24
16
  executables: []
25
-
26
17
  extensions: []
27
-
28
- extra_rdoc_files:
18
+ extra_rdoc_files:
29
19
  - CHANGELOG.txt
30
20
  - History.txt
31
21
  - README.txt
32
- files:
22
+ files:
33
23
  - CHANGELOG.txt
34
24
  - History.txt
35
25
  - Manifest.txt
@@ -68,40 +58,30 @@ files:
68
58
  - tasks/spec.rake
69
59
  - tasks/svn.rake
70
60
  - tasks/test.rake
71
- has_rdoc: true
72
61
  homepage: http://rally-rest-api.rubyforge.org/rally_rest_api
73
62
  licenses: []
74
-
75
63
  post_install_message:
76
- rdoc_options:
64
+ rdoc_options:
77
65
  - --main
78
66
  - README.txt
79
- require_paths:
67
+ require_paths:
80
68
  - lib
81
- required_ruby_version: !ruby/object:Gem::Requirement
69
+ required_ruby_version: !ruby/object:Gem::Requirement
82
70
  none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- hash: 3
87
- segments:
88
- - 0
89
- version: "0"
90
- required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
76
  none: false
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- hash: 3
96
- segments:
97
- - 0
98
- version: "0"
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
99
81
  requirements: []
100
-
101
82
  rubyforge_project: rally-rest-api
102
- rubygems_version: 1.3.7
83
+ rubygems_version: 1.8.6
103
84
  signing_key:
104
85
  specification_version: 3
105
86
  summary: A Ruby interface to the Rally REST API
106
87
  test_files: []
107
-