adamwiggins-rest-client 1.0 → 1.0.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 +1 -1
- data/Rakefile +1 -1
- data/lib/restclient/mixin/response.rb +43 -0
- data/lib/restclient/request.rb +1 -1
- data/rest-client.gemspec +2 -1
- data/spec/request_spec.rb +6 -0
- metadata +2 -1
data/README.rdoc
CHANGED
@@ -141,7 +141,7 @@ Patches contributed by: Chris Anderson, Greg Borenstein, Ardekantur, Pedro
|
|
141
141
|
Belo, Rafael Souza, Rick Olson, Aman Gupta, Blake Mizerany, Brian Donovan, Ivan
|
142
142
|
Makfinsky, Marc-André Cournoyer, Coda Hale, Tetsuo Watanabe, Dusty Doris,
|
143
143
|
Lennon Day-Reynolds, James Edward Gray II, Cyril Rohr, Juan Alvarez, and Adam
|
144
|
-
Jacob
|
144
|
+
Jacob, and Paul Dlug
|
145
145
|
|
146
146
|
Released under the MIT License: http://www.opensource.org/licenses/mit-license.php
|
147
147
|
|
data/Rakefile
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
module RestClient
|
2
|
+
module Mixin
|
3
|
+
module Response
|
4
|
+
attr_reader :net_http_res
|
5
|
+
|
6
|
+
# HTTP status code, always 200 since RestClient throws exceptions for
|
7
|
+
# other codes.
|
8
|
+
def code
|
9
|
+
@code ||= @net_http_res.code.to_i
|
10
|
+
end
|
11
|
+
|
12
|
+
# A hash of the headers, beautified with symbols and underscores.
|
13
|
+
# e.g. "Content-type" will become :content_type.
|
14
|
+
def headers
|
15
|
+
@headers ||= self.class.beautify_headers(@net_http_res.to_hash)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Hash of cookies extracted from response headers
|
19
|
+
def cookies
|
20
|
+
@cookies ||= (self.headers[:set_cookie] || "").split('; ').inject({}) do |out, raw_c|
|
21
|
+
key, val = raw_c.split('=')
|
22
|
+
unless %w(expires domain path secure).member?(key)
|
23
|
+
out[key] = val
|
24
|
+
end
|
25
|
+
out
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.included(receiver)
|
30
|
+
receiver.extend(RestClient::Mixin::Response::ClassMethods)
|
31
|
+
end
|
32
|
+
|
33
|
+
module ClassMethods
|
34
|
+
def beautify_headers(headers)
|
35
|
+
headers.inject({}) do |out, (key, value)|
|
36
|
+
out[key.gsub(/-/, '_').to_sym] = value.first
|
37
|
+
out
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/restclient/request.rb
CHANGED
@@ -213,7 +213,7 @@ module RestClient
|
|
213
213
|
end
|
214
214
|
|
215
215
|
def response_log(res)
|
216
|
-
size = @raw_response ? File.size(@tf.path) : res.body.size
|
216
|
+
size = @raw_response ? File.size(@tf.path) : (res.body.nil? ? 0 : res.body.size)
|
217
217
|
"# => #{res.code} #{res.class.to_s.gsub(/^Net::HTTP/, '')} | #{(res['Content-type'] || '').gsub(/;.*$/, '')} #{size} bytes"
|
218
218
|
end
|
219
219
|
|
data/rest-client.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "rest-client"
|
3
|
-
s.version = "1.0"
|
3
|
+
s.version = "1.0.1"
|
4
4
|
s.summary = "Simple REST client for Ruby, inspired by microframework syntax for specifying actions."
|
5
5
|
s.description = "A simple REST client for Ruby, inspired by the Sinatra microframework style of specifying actions: get, put, post, delete."
|
6
6
|
s.author = "Adam Wiggins"
|
@@ -13,6 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
lib/rest_client.rb lib/restclient.rb
|
14
14
|
lib/restclient/request.rb lib/restclient/response.rb
|
15
15
|
lib/restclient/exceptions.rb lib/restclient/resource.rb
|
16
|
+
lib/restclient/mixin/response.rb
|
16
17
|
spec/base.rb spec/request_spec.rb spec/response_spec.rb
|
17
18
|
spec/exceptions_spec.rb spec/resource_spec.rb spec/restclient_spec.rb
|
18
19
|
bin/restclient)
|
data/spec/request_spec.rb
CHANGED
@@ -278,6 +278,12 @@ describe RestClient::Request do
|
|
278
278
|
@request.response_log(res).should == "# => 200 OK | 4 bytes"
|
279
279
|
end
|
280
280
|
|
281
|
+
it "logs a response with a nil body" do
|
282
|
+
res = mock('result', :code => '200', :class => Net::HTTPOK, :body => nil)
|
283
|
+
res.stub!(:[]).with('Content-type').and_return('text/html; charset=utf-8')
|
284
|
+
@request.response_log(res).should == "# => 200 OK | text/html 0 bytes"
|
285
|
+
end
|
286
|
+
|
281
287
|
it "strips the charset from the response content type" do
|
282
288
|
res = mock('result', :code => '200', :class => Net::HTTPOK, :body => 'abcd')
|
283
289
|
res.stub!(:[]).with('Content-type').and_return('text/html; charset=utf-8')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adamwiggins-rest-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Wiggins
|
@@ -31,6 +31,7 @@ files:
|
|
31
31
|
- lib/restclient/response.rb
|
32
32
|
- lib/restclient/exceptions.rb
|
33
33
|
- lib/restclient/resource.rb
|
34
|
+
- lib/restclient/mixin/response.rb
|
34
35
|
- spec/base.rb
|
35
36
|
- spec/request_spec.rb
|
36
37
|
- spec/response_spec.rb
|