faraday 0.6.1 → 0.7.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.
- data/Gemfile +24 -14
- data/{LICENSE → LICENSE.md} +1 -1
- data/README.md +29 -27
- data/Rakefile +10 -2
- data/config.ru +6 -0
- data/faraday.gemspec +10 -7
- data/lib/faraday/adapter/net_http.rb +7 -7
- data/lib/faraday/adapter/patron.rb +11 -5
- data/lib/faraday/adapter/test.rb +30 -4
- data/lib/faraday/adapter/typhoeus.rb +7 -0
- data/lib/faraday/builder.rb +24 -1
- data/lib/faraday/connection.rb +51 -29
- data/lib/faraday/error.rb +2 -0
- data/lib/faraday/request/json.rb +5 -1
- data/lib/faraday/request.rb +19 -26
- data/lib/faraday/response.rb +2 -2
- data/lib/faraday/utils.rb +79 -18
- data/lib/faraday.rb +1 -1
- data/test/adapters/live_test.rb +30 -11
- data/test/adapters/test_middleware_test.rb +28 -1
- data/test/connection_test.rb +29 -20
- data/test/env_test.rb +45 -21
- data/test/helper.rb +4 -8
- data/test/live_server.rb +7 -3
- data/test/middleware_stack_test.rb +29 -2
- data/test/request_middleware_test.rb +33 -2
- data/test/response_middleware_test.rb +27 -0
- metadata +35 -13
|
@@ -42,6 +42,37 @@ class RequestMiddlewareTest < Faraday::TestCase
|
|
|
42
42
|
assert_equal '{"a":"b"}', response.body
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
+
def test_json_fails_with_useful_message_when_no_json_adapter_available
|
|
46
|
+
without_json_adapter do
|
|
47
|
+
expected_msg = "No JSON adapter available. Install either activesupport or yajl-ruby."
|
|
48
|
+
# assert_raise doesn't work to check the message (at least on 1.8.7)
|
|
49
|
+
begin
|
|
50
|
+
@conn.post('/echo', { :fruit => %w[apples oranges] }, 'content-type' => 'application/json')
|
|
51
|
+
fail "Exception not raised"
|
|
52
|
+
rescue Faraday::Error::MissingDependency => e
|
|
53
|
+
assert_equal expected_msg, e.message
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def test_url_encoded_does_not_fail_when_no_json_adapter_available
|
|
59
|
+
without_json_adapter do
|
|
60
|
+
assert_nothing_raised {
|
|
61
|
+
@conn.post('/echo', { :fruit => %w[apples oranges] })
|
|
62
|
+
}
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def without_json_adapter
|
|
67
|
+
original_adapter = Faraday::Request::JSON.adapter
|
|
68
|
+
Faraday::Request::JSON.adapter = nil
|
|
69
|
+
begin
|
|
70
|
+
yield
|
|
71
|
+
ensure
|
|
72
|
+
Faraday::Request::JSON.adapter = original_adapter
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
45
76
|
def test_url_encoded_no_header
|
|
46
77
|
response = @conn.post('/echo', { :fruit => %w[apples oranges] })
|
|
47
78
|
assert_equal 'application/x-www-form-urlencoded', response.headers['Content-Type']
|
|
@@ -74,8 +105,8 @@ class RequestMiddlewareTest < Faraday::TestCase
|
|
|
74
105
|
assert_kind_of Faraday::CompositeReadIO, response.body
|
|
75
106
|
assert_equal "multipart/form-data;boundary=%s" % Faraday::Request::Multipart::DEFAULT_BOUNDARY,
|
|
76
107
|
response.headers['Content-Type']
|
|
77
|
-
|
|
78
|
-
response.body.send(:ios).map
|
|
108
|
+
|
|
109
|
+
response.body.send(:ios).map{|io| io.read}.each do |io|
|
|
79
110
|
if re = regexes.detect { |r| io =~ r }
|
|
80
111
|
regexes.delete re
|
|
81
112
|
end
|
|
@@ -45,3 +45,30 @@ class ResponseMiddlewareTest < Faraday::TestCase
|
|
|
45
45
|
assert_equal '<BODY></BODY>', @conn.get('ok').body
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
|
+
|
|
49
|
+
class ResponseNoBodyMiddleWareTest < Faraday::TestCase
|
|
50
|
+
def setup
|
|
51
|
+
@conn = Faraday.new do |b|
|
|
52
|
+
b.response :raise_error
|
|
53
|
+
b.adapter :test do |stub|
|
|
54
|
+
stub.get('not modified') { [304, nil, nil] }
|
|
55
|
+
stub.get('no content') { [204, nil, nil] }
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
@conn.builder.insert(0, NotCalled)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
class NotCalled < Faraday::Response::Middleware
|
|
62
|
+
def parse(body)
|
|
63
|
+
raise "this should not be called"
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_204
|
|
68
|
+
assert_equal nil, @conn.get('no content').body
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_304
|
|
72
|
+
assert_equal nil, @conn.get('not modified').body
|
|
73
|
+
end
|
|
74
|
+
end
|
metadata
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: faraday
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: 0.
|
|
5
|
+
version: 0.7.4
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Rick Olson
|
|
@@ -10,7 +10,7 @@ autorequire:
|
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
12
|
|
|
13
|
-
date: 2011-
|
|
13
|
+
date: 2011-07-08 00:00:00 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: rake
|
|
@@ -20,35 +20,57 @@ dependencies:
|
|
|
20
20
|
requirements:
|
|
21
21
|
- - ~>
|
|
22
22
|
- !ruby/object:Gem::Version
|
|
23
|
-
version: "0.
|
|
23
|
+
version: "0.9"
|
|
24
24
|
type: :development
|
|
25
25
|
version_requirements: *id001
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
|
-
name:
|
|
27
|
+
name: test-unit
|
|
28
28
|
prerelease: false
|
|
29
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
|
30
30
|
none: false
|
|
31
31
|
requirements:
|
|
32
32
|
- - ~>
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: 2.
|
|
35
|
-
type: :
|
|
34
|
+
version: "2.3"
|
|
35
|
+
type: :development
|
|
36
36
|
version_requirements: *id002
|
|
37
37
|
- !ruby/object:Gem::Dependency
|
|
38
|
-
name:
|
|
38
|
+
name: webmock
|
|
39
39
|
prerelease: false
|
|
40
40
|
requirement: &id003 !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ~>
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: "1.6"
|
|
46
|
+
type: :development
|
|
47
|
+
version_requirements: *id003
|
|
48
|
+
- !ruby/object:Gem::Dependency
|
|
49
|
+
name: addressable
|
|
50
|
+
prerelease: false
|
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
|
52
|
+
none: false
|
|
53
|
+
requirements:
|
|
54
|
+
- - ~>
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: 2.2.6
|
|
57
|
+
type: :runtime
|
|
58
|
+
version_requirements: *id004
|
|
59
|
+
- !ruby/object:Gem::Dependency
|
|
60
|
+
name: multipart-post
|
|
61
|
+
prerelease: false
|
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
|
41
63
|
none: false
|
|
42
64
|
requirements:
|
|
43
65
|
- - ~>
|
|
44
66
|
- !ruby/object:Gem::Version
|
|
45
67
|
version: 1.1.0
|
|
46
68
|
type: :runtime
|
|
47
|
-
version_requirements: *
|
|
69
|
+
version_requirements: *id005
|
|
48
70
|
- !ruby/object:Gem::Dependency
|
|
49
71
|
name: rack
|
|
50
72
|
prerelease: false
|
|
51
|
-
requirement: &
|
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
|
52
74
|
none: false
|
|
53
75
|
requirements:
|
|
54
76
|
- - ">="
|
|
@@ -58,7 +80,7 @@ dependencies:
|
|
|
58
80
|
- !ruby/object:Gem::Version
|
|
59
81
|
version: "2"
|
|
60
82
|
type: :runtime
|
|
61
|
-
version_requirements: *
|
|
83
|
+
version_requirements: *id006
|
|
62
84
|
description: HTTP/REST API client library.
|
|
63
85
|
email: technoweenie@gmail.com
|
|
64
86
|
executables: []
|
|
@@ -69,9 +91,10 @@ extra_rdoc_files: []
|
|
|
69
91
|
|
|
70
92
|
files:
|
|
71
93
|
- Gemfile
|
|
72
|
-
- LICENSE
|
|
94
|
+
- LICENSE.md
|
|
73
95
|
- README.md
|
|
74
96
|
- Rakefile
|
|
97
|
+
- config.ru
|
|
75
98
|
- faraday.gemspec
|
|
76
99
|
- lib/faraday.rb
|
|
77
100
|
- lib/faraday/adapter.rb
|
|
@@ -129,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
129
152
|
requirements: []
|
|
130
153
|
|
|
131
154
|
rubyforge_project: faraday
|
|
132
|
-
rubygems_version: 1.
|
|
155
|
+
rubygems_version: 1.8.5
|
|
133
156
|
signing_key:
|
|
134
157
|
specification_version: 2
|
|
135
158
|
summary: HTTP/REST API client library.
|
|
@@ -143,4 +166,3 @@ test_files:
|
|
|
143
166
|
- test/middleware_stack_test.rb
|
|
144
167
|
- test/request_middleware_test.rb
|
|
145
168
|
- test/response_middleware_test.rb
|
|
146
|
-
has_rdoc:
|