rest 2.0.2 → 2.0.3
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/Gemfile.lock +7 -7
- data/Rakefile +1 -1
- data/lib/rest/client.rb +10 -2
- data/lib/rest/version.rb +1 -1
- data/lib/rest/wrappers/net_http_persistent_wrapper.rb +25 -8
- data/test/test_base.rb +1 -2
- data/test/test_rest.rb +14 -13
- data/test/tmp.rb +10 -13
- metadata +2 -2
data/Gemfile.lock
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rest (2.0.
|
4
|
+
rest (2.0.2)
|
5
5
|
net-http-persistent
|
6
6
|
rest-client (>= 0.3.0)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
excon (0.
|
12
|
-
ffi (1.1.
|
11
|
+
excon (0.16.3)
|
12
|
+
ffi (1.1.5)
|
13
13
|
mime-types (1.19)
|
14
|
-
minitest (3.
|
14
|
+
minitest (3.5.0)
|
15
15
|
net-http-persistent (2.7)
|
16
|
-
quicky (0.
|
16
|
+
quicky (0.1.1)
|
17
17
|
rake (0.9.2.2)
|
18
18
|
rest-client (1.6.7)
|
19
19
|
mime-types (>= 1.16)
|
20
|
-
test-unit (2.5.
|
20
|
+
test-unit (2.5.2)
|
21
21
|
typhoeus (0.4.2)
|
22
22
|
ffi (~> 1.0)
|
23
23
|
mime-types (~> 1.18)
|
24
|
-
uber_config (0.0.
|
24
|
+
uber_config (0.0.6)
|
25
25
|
|
26
26
|
PLATFORMS
|
27
27
|
ruby
|
data/Rakefile
CHANGED
@@ -16,7 +16,7 @@ Rake::RDocTask.new do |rdoc|
|
|
16
16
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
17
17
|
|
18
18
|
rdoc.rdoc_dir = 'doc'
|
19
|
-
rdoc.title = "
|
19
|
+
rdoc.title = "rest #{version}"
|
20
20
|
rdoc.rdoc_files.include('README*')
|
21
21
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
22
|
end
|
data/lib/rest/client.rb
CHANGED
@@ -11,6 +11,14 @@ module Rest
|
|
11
11
|
|
12
12
|
require_relative 'wrappers/base_wrapper'
|
13
13
|
|
14
|
+
def self.logger=(logger)
|
15
|
+
@logger = logger
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.logger()
|
19
|
+
@logger
|
20
|
+
end
|
21
|
+
|
14
22
|
class Client
|
15
23
|
|
16
24
|
attr_accessor :options, :logger, :gem
|
@@ -18,9 +26,9 @@ module Rest
|
|
18
26
|
# - :gem => specify gem explicitly
|
19
27
|
#
|
20
28
|
def initialize(options={})
|
21
|
-
@logger = Logger.new(STDOUT)
|
22
|
-
@logger.level=Logger::INFO
|
23
29
|
@options = options
|
30
|
+
@logger = Logger.new(STDOUT)
|
31
|
+
Rest.logger = @logger
|
24
32
|
|
25
33
|
@gem = options[:gem] if options[:gem]
|
26
34
|
|
data/lib/rest/version.rb
CHANGED
@@ -13,6 +13,14 @@ module Rest
|
|
13
13
|
class NetHttpPersistentResponseWrapper < BaseResponseWrapper
|
14
14
|
def initialize(response)
|
15
15
|
@response = response
|
16
|
+
|
17
|
+
if response.header['content-encoding'].eql?('gzip')
|
18
|
+
Rest.logger.debug 'GZIPPED'
|
19
|
+
sio = StringIO.new( response.body )
|
20
|
+
gz = Zlib::GzipReader.new( sio )
|
21
|
+
page = gz.read()
|
22
|
+
@body = page
|
23
|
+
end
|
16
24
|
end
|
17
25
|
|
18
26
|
def code
|
@@ -20,6 +28,11 @@ module Rest
|
|
20
28
|
end
|
21
29
|
|
22
30
|
def body
|
31
|
+
@body || @response.body
|
32
|
+
end
|
33
|
+
|
34
|
+
# In case for some reason you want the unencoded body
|
35
|
+
def body_raw
|
23
36
|
@response.body
|
24
37
|
end
|
25
38
|
|
@@ -79,7 +92,11 @@ module Rest
|
|
79
92
|
post = Net::HTTP::Get.new fix_path(uri.request_uri)
|
80
93
|
add_headers(post, req_hash, default_headers)
|
81
94
|
response = http.request uri, post
|
82
|
-
@client.logger.debug
|
95
|
+
if @client.logger.debug?
|
96
|
+
@client.logger.debug "Response class: #{response.class.name}"
|
97
|
+
@client.logger.debug "Response headers: #{response.header.to_hash.inspect}"
|
98
|
+
end
|
99
|
+
|
83
100
|
r = NetHttpPersistentResponseWrapper.new(response)
|
84
101
|
case response
|
85
102
|
when Net::HTTPClientError, Net::HTTPServerError
|
@@ -92,13 +109,13 @@ module Rest
|
|
92
109
|
# @client.logger.debug "moved to #{response['location']}"
|
93
110
|
# response = get(response['location'], req_hash, {limit: options[:limit]-1})
|
94
111
|
#end
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
112
|
+
#rescue Net::HTTPClientError, Net::HTTPServerError => ex
|
113
|
+
# raise NetHttpPersistentExceptionWrapper.new(ex)
|
114
|
+
#rescue Net::HTTPServerError => ex
|
115
|
+
# if ex.code == 404
|
116
|
+
# return NetHttpPersistentResponseWrapper.new(ex)
|
117
|
+
# end
|
118
|
+
# raise NetHttpPersistentExceptionWrapper.new(ex)
|
102
119
|
end
|
103
120
|
r
|
104
121
|
end
|
data/test/test_base.rb
CHANGED
@@ -12,8 +12,7 @@ class TestBase < Test::Unit::TestCase
|
|
12
12
|
|
13
13
|
def setup
|
14
14
|
puts 'setup'
|
15
|
-
@rest = Rest::Client.new(:gem => :net_http_persistent)
|
16
|
-
@rest.logger.level = Logger::DEBUG
|
15
|
+
@rest = Rest::Client.new(:gem => :net_http_persistent, :log_level=>Logger::DEBUG)
|
17
16
|
@request_bin = "http://requestb.in/13t6hs51"
|
18
17
|
|
19
18
|
end
|
data/test/test_rest.rb
CHANGED
@@ -47,19 +47,6 @@ class TestRest < TestBase
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def test_gets
|
50
|
-
@token = "abctoken"
|
51
|
-
headers = {
|
52
|
-
'Content-Type' => 'application/json',
|
53
|
-
'Authorization' => "OAuth #{@token}",
|
54
|
-
'User-Agent' => "someagent"
|
55
|
-
}
|
56
|
-
body = {"foo" => "bar"}
|
57
|
-
response = @rest.get("#{bin}?param1=x")
|
58
|
-
|
59
|
-
# params as hash
|
60
|
-
response = @rest.get("#{bin}?x=y#frag", :params => {:param2 => "abc"})
|
61
|
-
response = @rest.get("#{bin}", :params => {param3: "xyz"})
|
62
|
-
response = @rest.get("#{bin}")
|
63
50
|
|
64
51
|
response = @rest.get("http://rest-test.iron.io/code/200")
|
65
52
|
assert response.code == 200
|
@@ -70,6 +57,7 @@ class TestRest < TestBase
|
|
70
57
|
end
|
71
58
|
|
72
59
|
def test_404
|
60
|
+
puts 'test_404'
|
73
61
|
begin
|
74
62
|
response = @rest.get("http://rest-test.iron.io/code/404")
|
75
63
|
assert false, "shouldn't get here"
|
@@ -86,6 +74,7 @@ class TestRest < TestBase
|
|
86
74
|
end
|
87
75
|
|
88
76
|
def test_400
|
77
|
+
puts 'test_400'
|
89
78
|
begin
|
90
79
|
response = @rest.get("http://rest-test.iron.io/code/400")
|
91
80
|
assert false, "shouldn't get here"
|
@@ -141,5 +130,17 @@ class TestRest < TestBase
|
|
141
130
|
|
142
131
|
end
|
143
132
|
|
133
|
+
def test_gzip
|
134
|
+
|
135
|
+
options = {}
|
136
|
+
url = "http://api.stackexchange.com/2.1/users?order=desc&sort=reputation&site=stackoverflow"
|
137
|
+
rest = Rest::Client.new
|
138
|
+
|
139
|
+
res = rest.get(url, options)
|
140
|
+
|
141
|
+
puts res.body
|
142
|
+
assert res.body.include?("items")
|
143
|
+
end
|
144
|
+
|
144
145
|
end
|
145
146
|
|
data/test/tmp.rb
CHANGED
@@ -9,19 +9,16 @@ class TestTemp < TestBase
|
|
9
9
|
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
assert ex.response.body
|
23
|
-
assert ex.code == 500
|
24
|
-
end
|
12
|
+
def test_gzip
|
13
|
+
|
14
|
+
options = {}
|
15
|
+
url = "http://api.stackexchange.com/2.1/users?order=desc&sort=reputation&site=stackoverflow"
|
16
|
+
rest = Rest::Client.new
|
17
|
+
|
18
|
+
res = rest.get(url, options)
|
19
|
+
|
20
|
+
puts res.body
|
21
|
+
assert res.body.include?("items")
|
25
22
|
end
|
26
23
|
end
|
27
24
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|