faraday 0.6.0 → 0.9.0
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.
- checksums.yaml +7 -0
- data/.document +6 -0
- data/CHANGELOG.md +15 -0
- data/CONTRIBUTING.md +36 -0
- data/Gemfile +25 -15
- data/{LICENSE → LICENSE.md} +1 -1
- data/README.md +187 -137
- data/Rakefile +38 -101
- data/faraday.gemspec +26 -81
- data/lib/faraday/adapter/em_http.rb +237 -0
- data/lib/faraday/adapter/em_http_ssl_patch.rb +56 -0
- data/lib/faraday/adapter/em_synchrony/parallel_manager.rb +66 -0
- data/lib/faraday/adapter/em_synchrony.rb +65 -38
- data/lib/faraday/adapter/excon.rb +60 -9
- data/lib/faraday/adapter/httpclient.rb +106 -0
- data/lib/faraday/adapter/net_http.rb +89 -38
- data/lib/faraday/adapter/net_http_persistent.rb +47 -0
- data/lib/faraday/adapter/patron.rb +46 -9
- data/lib/faraday/adapter/rack.rb +58 -0
- data/lib/faraday/adapter/test.rb +68 -28
- data/lib/faraday/adapter/typhoeus.rb +94 -16
- data/lib/faraday/adapter.rb +33 -25
- data/lib/faraday/autoload.rb +85 -0
- data/lib/faraday/connection.rb +342 -134
- data/lib/faraday/error.rb +44 -29
- data/lib/faraday/middleware.rb +18 -10
- data/lib/faraday/options.rb +350 -0
- data/lib/faraday/parameters.rb +193 -0
- data/lib/faraday/rack_builder.rb +212 -0
- data/lib/faraday/request/authorization.rb +42 -0
- data/lib/faraday/request/basic_authentication.rb +13 -0
- data/lib/faraday/request/instrumentation.rb +36 -0
- data/lib/faraday/request/multipart.rb +15 -15
- data/lib/faraday/request/retry.rb +118 -0
- data/lib/faraday/request/token_authentication.rb +15 -0
- data/lib/faraday/request/url_encoded.rb +8 -9
- data/lib/faraday/request.rb +46 -45
- data/lib/faraday/response/logger.rb +4 -4
- data/lib/faraday/response/raise_error.rb +8 -3
- data/lib/faraday/response.rb +20 -25
- data/lib/faraday/upload_io.rb +51 -7
- data/lib/faraday/utils.rb +240 -44
- data/lib/faraday.rb +218 -38
- data/script/console +7 -0
- data/script/generate_certs +42 -0
- data/script/package +7 -0
- data/script/proxy-server +42 -0
- data/script/release +17 -0
- data/script/server +36 -0
- data/script/test +172 -0
- data/test/adapters/default_test.rb +14 -0
- data/test/adapters/em_http_test.rb +20 -0
- data/test/adapters/em_synchrony_test.rb +20 -0
- data/test/adapters/excon_test.rb +20 -0
- data/test/adapters/httpclient_test.rb +21 -0
- data/test/adapters/integration.rb +254 -0
- data/test/adapters/logger_test.rb +3 -3
- data/test/adapters/net_http_persistent_test.rb +20 -0
- data/test/adapters/net_http_test.rb +6 -25
- data/test/adapters/patron_test.rb +20 -0
- data/test/adapters/rack_test.rb +31 -0
- data/test/adapters/test_middleware_test.rb +74 -3
- data/test/adapters/typhoeus_test.rb +28 -0
- data/test/authentication_middleware_test.rb +65 -0
- data/test/composite_read_io_test.rb +111 -0
- data/test/connection_test.rb +381 -104
- data/test/env_test.rb +116 -40
- data/test/helper.rb +61 -25
- data/test/live_server.rb +55 -29
- data/test/middleware/instrumentation_test.rb +88 -0
- data/test/middleware/retry_test.rb +109 -0
- data/test/middleware_stack_test.rb +87 -5
- data/test/multibyte.txt +1 -0
- data/test/options_test.rb +252 -0
- data/test/request_middleware_test.rb +78 -21
- data/test/response_middleware_test.rb +32 -7
- data/test/strawberry.rb +2 -0
- data/test/utils_test.rb +58 -0
- metadata +116 -117
- data/lib/faraday/adapter/action_dispatch.rb +0 -30
- data/lib/faraday/builder.rb +0 -137
- data/lib/faraday/request/json.rb +0 -31
- data/test/adapters/live_test.rb +0 -186
metadata
CHANGED
|
@@ -1,182 +1,181 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: faraday
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
5
|
-
prerelease: false
|
|
6
|
-
segments:
|
|
7
|
-
- 0
|
|
8
|
-
- 6
|
|
9
|
-
- 0
|
|
10
|
-
version: 0.6.0
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.9.0
|
|
11
5
|
platform: ruby
|
|
12
|
-
authors:
|
|
6
|
+
authors:
|
|
13
7
|
- Rick Olson
|
|
14
8
|
autorequire:
|
|
15
9
|
bindir: bin
|
|
16
10
|
cert_chain: []
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
dependencies:
|
|
21
|
-
- !ruby/object:Gem::Dependency
|
|
22
|
-
name: rake
|
|
23
|
-
prerelease: false
|
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
|
25
|
-
none: false
|
|
26
|
-
requirements:
|
|
27
|
-
- - ~>
|
|
28
|
-
- !ruby/object:Gem::Version
|
|
29
|
-
hash: 27
|
|
30
|
-
segments:
|
|
31
|
-
- 0
|
|
32
|
-
- 8
|
|
33
|
-
version: "0.8"
|
|
34
|
-
type: :development
|
|
35
|
-
version_requirements: *id001
|
|
36
|
-
- !ruby/object:Gem::Dependency
|
|
37
|
-
name: addressable
|
|
38
|
-
prerelease: false
|
|
39
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
|
40
|
-
none: false
|
|
41
|
-
requirements:
|
|
42
|
-
- - ~>
|
|
43
|
-
- !ruby/object:Gem::Version
|
|
44
|
-
hash: 15
|
|
45
|
-
segments:
|
|
46
|
-
- 2
|
|
47
|
-
- 2
|
|
48
|
-
- 4
|
|
49
|
-
version: 2.2.4
|
|
50
|
-
type: :runtime
|
|
51
|
-
version_requirements: *id002
|
|
52
|
-
- !ruby/object:Gem::Dependency
|
|
11
|
+
date: 2014-01-16 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
53
14
|
name: multipart-post
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
- 1
|
|
63
|
-
- 1
|
|
64
|
-
- 0
|
|
65
|
-
version: 1.1.0
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.2'
|
|
20
|
+
- - "<"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '3'
|
|
66
23
|
type: :runtime
|
|
67
|
-
version_requirements: *id003
|
|
68
|
-
- !ruby/object:Gem::Dependency
|
|
69
|
-
name: rack
|
|
70
24
|
prerelease: false
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
requirements:
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
requirements:
|
|
74
27
|
- - ">="
|
|
75
|
-
- !ruby/object:Gem::Version
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
version_requirements:
|
|
90
|
-
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '1.2'
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '3'
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: bundler
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '1.0'
|
|
40
|
+
type: :development
|
|
41
|
+
prerelease: false
|
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '1.0'
|
|
47
|
+
description:
|
|
91
48
|
email: technoweenie@gmail.com
|
|
92
49
|
executables: []
|
|
93
|
-
|
|
94
50
|
extensions: []
|
|
95
|
-
|
|
96
51
|
extra_rdoc_files: []
|
|
97
|
-
|
|
98
|
-
|
|
52
|
+
files:
|
|
53
|
+
- ".document"
|
|
54
|
+
- CHANGELOG.md
|
|
55
|
+
- CONTRIBUTING.md
|
|
99
56
|
- Gemfile
|
|
100
|
-
- LICENSE
|
|
57
|
+
- LICENSE.md
|
|
101
58
|
- README.md
|
|
102
59
|
- Rakefile
|
|
103
60
|
- faraday.gemspec
|
|
104
61
|
- lib/faraday.rb
|
|
105
62
|
- lib/faraday/adapter.rb
|
|
106
|
-
- lib/faraday/adapter/
|
|
63
|
+
- lib/faraday/adapter/em_http.rb
|
|
64
|
+
- lib/faraday/adapter/em_http_ssl_patch.rb
|
|
107
65
|
- lib/faraday/adapter/em_synchrony.rb
|
|
66
|
+
- lib/faraday/adapter/em_synchrony/parallel_manager.rb
|
|
108
67
|
- lib/faraday/adapter/excon.rb
|
|
68
|
+
- lib/faraday/adapter/httpclient.rb
|
|
109
69
|
- lib/faraday/adapter/net_http.rb
|
|
70
|
+
- lib/faraday/adapter/net_http_persistent.rb
|
|
110
71
|
- lib/faraday/adapter/patron.rb
|
|
72
|
+
- lib/faraday/adapter/rack.rb
|
|
111
73
|
- lib/faraday/adapter/test.rb
|
|
112
74
|
- lib/faraday/adapter/typhoeus.rb
|
|
113
|
-
- lib/faraday/
|
|
75
|
+
- lib/faraday/autoload.rb
|
|
114
76
|
- lib/faraday/connection.rb
|
|
115
77
|
- lib/faraday/error.rb
|
|
116
78
|
- lib/faraday/middleware.rb
|
|
79
|
+
- lib/faraday/options.rb
|
|
80
|
+
- lib/faraday/parameters.rb
|
|
81
|
+
- lib/faraday/rack_builder.rb
|
|
117
82
|
- lib/faraday/request.rb
|
|
118
|
-
- lib/faraday/request/
|
|
83
|
+
- lib/faraday/request/authorization.rb
|
|
84
|
+
- lib/faraday/request/basic_authentication.rb
|
|
85
|
+
- lib/faraday/request/instrumentation.rb
|
|
119
86
|
- lib/faraday/request/multipart.rb
|
|
87
|
+
- lib/faraday/request/retry.rb
|
|
88
|
+
- lib/faraday/request/token_authentication.rb
|
|
120
89
|
- lib/faraday/request/url_encoded.rb
|
|
121
90
|
- lib/faraday/response.rb
|
|
122
91
|
- lib/faraday/response/logger.rb
|
|
123
92
|
- lib/faraday/response/raise_error.rb
|
|
124
93
|
- lib/faraday/upload_io.rb
|
|
125
94
|
- lib/faraday/utils.rb
|
|
126
|
-
-
|
|
95
|
+
- script/console
|
|
96
|
+
- script/generate_certs
|
|
97
|
+
- script/package
|
|
98
|
+
- script/proxy-server
|
|
99
|
+
- script/release
|
|
100
|
+
- script/server
|
|
101
|
+
- script/test
|
|
102
|
+
- test/adapters/default_test.rb
|
|
103
|
+
- test/adapters/em_http_test.rb
|
|
104
|
+
- test/adapters/em_synchrony_test.rb
|
|
105
|
+
- test/adapters/excon_test.rb
|
|
106
|
+
- test/adapters/httpclient_test.rb
|
|
107
|
+
- test/adapters/integration.rb
|
|
127
108
|
- test/adapters/logger_test.rb
|
|
109
|
+
- test/adapters/net_http_persistent_test.rb
|
|
128
110
|
- test/adapters/net_http_test.rb
|
|
111
|
+
- test/adapters/patron_test.rb
|
|
112
|
+
- test/adapters/rack_test.rb
|
|
129
113
|
- test/adapters/test_middleware_test.rb
|
|
114
|
+
- test/adapters/typhoeus_test.rb
|
|
115
|
+
- test/authentication_middleware_test.rb
|
|
116
|
+
- test/composite_read_io_test.rb
|
|
130
117
|
- test/connection_test.rb
|
|
131
118
|
- test/env_test.rb
|
|
132
119
|
- test/helper.rb
|
|
133
120
|
- test/live_server.rb
|
|
121
|
+
- test/middleware/instrumentation_test.rb
|
|
122
|
+
- test/middleware/retry_test.rb
|
|
134
123
|
- test/middleware_stack_test.rb
|
|
124
|
+
- test/multibyte.txt
|
|
125
|
+
- test/options_test.rb
|
|
135
126
|
- test/request_middleware_test.rb
|
|
136
127
|
- test/response_middleware_test.rb
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
128
|
+
- test/strawberry.rb
|
|
129
|
+
- test/utils_test.rb
|
|
130
|
+
homepage: https://github.com/lostisland/faraday
|
|
131
|
+
licenses:
|
|
132
|
+
- MIT
|
|
133
|
+
metadata: {}
|
|
141
134
|
post_install_message:
|
|
142
135
|
rdoc_options: []
|
|
143
|
-
|
|
144
|
-
require_paths:
|
|
136
|
+
require_paths:
|
|
145
137
|
- lib
|
|
146
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
|
-
|
|
148
|
-
requirements:
|
|
138
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
139
|
+
requirements:
|
|
149
140
|
- - ">="
|
|
150
|
-
- !ruby/object:Gem::Version
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
version: "0"
|
|
155
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
|
-
none: false
|
|
157
|
-
requirements:
|
|
141
|
+
- !ruby/object:Gem::Version
|
|
142
|
+
version: '0'
|
|
143
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
|
+
requirements:
|
|
158
145
|
- - ">="
|
|
159
|
-
- !ruby/object:Gem::Version
|
|
160
|
-
hash: 17
|
|
161
|
-
segments:
|
|
162
|
-
- 1
|
|
163
|
-
- 3
|
|
164
|
-
- 5
|
|
146
|
+
- !ruby/object:Gem::Version
|
|
165
147
|
version: 1.3.5
|
|
166
148
|
requirements: []
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
rubygems_version: 1.3.7
|
|
149
|
+
rubyforge_project:
|
|
150
|
+
rubygems_version: 2.2.0
|
|
170
151
|
signing_key:
|
|
171
152
|
specification_version: 2
|
|
172
153
|
summary: HTTP/REST API client library.
|
|
173
|
-
test_files:
|
|
174
|
-
- test/adapters/
|
|
154
|
+
test_files:
|
|
155
|
+
- test/adapters/default_test.rb
|
|
156
|
+
- test/adapters/em_http_test.rb
|
|
157
|
+
- test/adapters/em_synchrony_test.rb
|
|
158
|
+
- test/adapters/excon_test.rb
|
|
159
|
+
- test/adapters/httpclient_test.rb
|
|
160
|
+
- test/adapters/integration.rb
|
|
175
161
|
- test/adapters/logger_test.rb
|
|
162
|
+
- test/adapters/net_http_persistent_test.rb
|
|
176
163
|
- test/adapters/net_http_test.rb
|
|
164
|
+
- test/adapters/patron_test.rb
|
|
165
|
+
- test/adapters/rack_test.rb
|
|
177
166
|
- test/adapters/test_middleware_test.rb
|
|
167
|
+
- test/adapters/typhoeus_test.rb
|
|
168
|
+
- test/authentication_middleware_test.rb
|
|
169
|
+
- test/composite_read_io_test.rb
|
|
178
170
|
- test/connection_test.rb
|
|
179
171
|
- test/env_test.rb
|
|
172
|
+
- test/helper.rb
|
|
173
|
+
- test/live_server.rb
|
|
174
|
+
- test/middleware/instrumentation_test.rb
|
|
175
|
+
- test/middleware/retry_test.rb
|
|
180
176
|
- test/middleware_stack_test.rb
|
|
177
|
+
- test/options_test.rb
|
|
181
178
|
- test/request_middleware_test.rb
|
|
182
179
|
- test/response_middleware_test.rb
|
|
180
|
+
- test/strawberry.rb
|
|
181
|
+
- test/utils_test.rb
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module Faraday
|
|
2
|
-
class Adapter
|
|
3
|
-
class ActionDispatch < Faraday::Adapter
|
|
4
|
-
attr_reader :session
|
|
5
|
-
|
|
6
|
-
# Initializes a new middleware instance for each request. Instead of
|
|
7
|
-
# initiating an HTTP request with a web server, this adapter calls
|
|
8
|
-
# a Rails 3 app using integration tests.
|
|
9
|
-
#
|
|
10
|
-
# app - The current Faraday request.
|
|
11
|
-
# session - An ActionDispatch::Integration::Session instance.
|
|
12
|
-
#
|
|
13
|
-
# Returns nothing.
|
|
14
|
-
def initialize(app, session)
|
|
15
|
-
super(app)
|
|
16
|
-
@session = session
|
|
17
|
-
@session.reset!
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def call(env)
|
|
21
|
-
super
|
|
22
|
-
@session.__send__(env[:method], env[:url].request_uri, env[:body], env[:request_headers])
|
|
23
|
-
resp = @session.response
|
|
24
|
-
env.update :status => resp.status, :body => resp.body
|
|
25
|
-
response_headers(env).update resp.headers
|
|
26
|
-
@app.call env
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
data/lib/faraday/builder.rb
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
module Faraday
|
|
2
|
-
# Possibly going to extend this a bit.
|
|
3
|
-
#
|
|
4
|
-
# Faraday::Connection.new(:url => 'http://sushi.com') do |builder|
|
|
5
|
-
# builder.request :url_encoded # Faraday::Request::UrlEncoded
|
|
6
|
-
# builder.adapter :net_http # Faraday::Adapter::NetHttp
|
|
7
|
-
# end
|
|
8
|
-
class Builder
|
|
9
|
-
attr_accessor :handlers
|
|
10
|
-
|
|
11
|
-
def self.create
|
|
12
|
-
new { |builder| yield builder }
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# borrowed from ActiveSupport::Dependencies::Reference &
|
|
16
|
-
# ActionDispatch::MiddlewareStack::Middleware
|
|
17
|
-
class Handler
|
|
18
|
-
@@constants = Hash.new { |h, k|
|
|
19
|
-
h[k] = k.respond_to?(:constantize) ? k.constantize : Object.const_get(k)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
attr_reader :name
|
|
23
|
-
|
|
24
|
-
def initialize(klass, *args, &block)
|
|
25
|
-
@name = klass.to_s
|
|
26
|
-
@@constants[@name] = klass if klass.respond_to?(:name)
|
|
27
|
-
@args, @block = args, block
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def klass() @@constants[@name] end
|
|
31
|
-
def inspect() @name end
|
|
32
|
-
|
|
33
|
-
def ==(other)
|
|
34
|
-
if other.respond_to? :name
|
|
35
|
-
klass == other
|
|
36
|
-
else
|
|
37
|
-
@name == other.to_s
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def build(app)
|
|
42
|
-
klass.new(app, *@args, &@block)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def initialize(handlers = [])
|
|
47
|
-
@handlers = handlers
|
|
48
|
-
if block_given?
|
|
49
|
-
build(&Proc.new)
|
|
50
|
-
elsif @handlers.empty?
|
|
51
|
-
# default stack, if nothing else is configured
|
|
52
|
-
self.request :url_encoded
|
|
53
|
-
self.adapter Faraday.default_adapter
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def build(options = {})
|
|
58
|
-
@handlers.clear unless options[:keep]
|
|
59
|
-
yield self if block_given?
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def [](idx)
|
|
63
|
-
@handlers[idx]
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def ==(other)
|
|
67
|
-
other.is_a?(self.class) && @handlers == other.handlers
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def dup
|
|
71
|
-
self.class.new(@handlers.dup)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def to_app(inner_app)
|
|
75
|
-
# last added handler is the deepest and thus closest to the inner app
|
|
76
|
-
@handlers.reverse.inject(inner_app) { |app, handler| handler.build(app) }
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def use(klass, *args)
|
|
80
|
-
block = block_given? ? Proc.new : nil
|
|
81
|
-
@handlers << self.class::Handler.new(klass, *args, &block)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def request(key, *args)
|
|
85
|
-
block = block_given? ? Proc.new : nil
|
|
86
|
-
use_symbol(Faraday::Request, key, *args, &block)
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def response(key, *args)
|
|
90
|
-
block = block_given? ? Proc.new : nil
|
|
91
|
-
use_symbol(Faraday::Response, key, *args, &block)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def adapter(key, *args)
|
|
95
|
-
block = block_given? ? Proc.new : nil
|
|
96
|
-
use_symbol(Faraday::Adapter, key, *args, &block)
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
## methods to push onto the various positions in the stack:
|
|
100
|
-
|
|
101
|
-
def insert(index, *args, &block)
|
|
102
|
-
index = assert_index(index)
|
|
103
|
-
handler = self.class::Handler.new(*args, &block)
|
|
104
|
-
@handlers.insert(index, handler)
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
alias_method :insert_before, :insert
|
|
108
|
-
|
|
109
|
-
def insert_after(index, *args, &block)
|
|
110
|
-
index = assert_index(index)
|
|
111
|
-
insert(index + 1, *args, &block)
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
def swap(index, *args, &block)
|
|
115
|
-
index = assert_index(index)
|
|
116
|
-
@handlers.delete_at(index)
|
|
117
|
-
insert(index, *args, &block)
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
def delete(handler)
|
|
121
|
-
@handlers.delete(handler)
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
private
|
|
125
|
-
|
|
126
|
-
def use_symbol(mod, key, *args)
|
|
127
|
-
block = block_given? ? Proc.new : nil
|
|
128
|
-
use(mod.lookup_module(key), *args, &block)
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
def assert_index(index)
|
|
132
|
-
idx = index.is_a?(Integer) ? index : @handlers.index(index)
|
|
133
|
-
raise "No such handler: #{index.inspect}" unless idx
|
|
134
|
-
idx
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
end
|
data/lib/faraday/request/json.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module Faraday
|
|
2
|
-
class Request::JSON < Request::UrlEncoded
|
|
3
|
-
self.mime_type = 'application/json'.freeze
|
|
4
|
-
|
|
5
|
-
class << self
|
|
6
|
-
attr_accessor :adapter
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
# loads the JSON encoder either from yajl-ruby or activesupport
|
|
10
|
-
dependency do
|
|
11
|
-
begin
|
|
12
|
-
require 'yajl'
|
|
13
|
-
self.adapter = Yajl::Encoder
|
|
14
|
-
rescue LoadError, NameError
|
|
15
|
-
require 'active_support/core_ext/module/attribute_accessors' # AS 2.3.11
|
|
16
|
-
require 'active_support/core_ext/kernel/reporting' # AS 2.3.11
|
|
17
|
-
require 'active_support/json/encoding'
|
|
18
|
-
require 'active_support/ordered_hash' # AS 3.0.4
|
|
19
|
-
self.adapter = ActiveSupport::JSON
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def call(env)
|
|
24
|
-
match_content_type(env) do |data|
|
|
25
|
-
# encode with the first successfully loaded adapter
|
|
26
|
-
env[:body] = self.class.adapter.encode data
|
|
27
|
-
end
|
|
28
|
-
@app.call env
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
data/test/adapters/live_test.rb
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'helper'))
|
|
2
|
-
|
|
3
|
-
if !Faraday::TestCase::LIVE_SERVER
|
|
4
|
-
warn "warning: test server is not up; skipping live server tests"
|
|
5
|
-
else
|
|
6
|
-
module Adapters
|
|
7
|
-
class LiveTest < Faraday::TestCase
|
|
8
|
-
adapters = if ENV['ADAPTER']
|
|
9
|
-
ENV['ADAPTER'].split(':').map { |name| Faraday::Adapter.lookup_module name.to_sym }
|
|
10
|
-
else
|
|
11
|
-
loaded_adapters = Faraday::Adapter.all_loaded_constants
|
|
12
|
-
loaded_adapters -= [Faraday::Adapter::ActionDispatch]
|
|
13
|
-
loaded_adapters << :default
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
adapters.each do |adapter|
|
|
17
|
-
define_method "test_#{adapter}_GET_retrieves_the_response_body" do
|
|
18
|
-
assert_equal 'hello world', create_connection(adapter).get('hello_world').body
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
define_method "test_#{adapter}_GET_send_url_encoded_params" do
|
|
22
|
-
resp = create_connection(adapter).get do |req|
|
|
23
|
-
req.url 'hello', 'name' => 'zack'
|
|
24
|
-
end
|
|
25
|
-
assert_equal('hello zack', resp.body)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
define_method "test_#{adapter}_GET_retrieves_the_response_headers" do
|
|
29
|
-
response = create_connection(adapter).get('hello_world')
|
|
30
|
-
assert_match /text\/html/, response.headers['Content-Type'], 'original case fail'
|
|
31
|
-
assert_match /text\/html/, response.headers['content-type'], 'lowercase fail'
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# https://github.com/geemus/excon/issues/10
|
|
35
|
-
unless %[Faraday::Adapter::Excon] == adapter.to_s
|
|
36
|
-
define_method "test_#{adapter}_GET_handles_headers_with_multiple_values" do
|
|
37
|
-
response = create_connection(adapter).get('multi')
|
|
38
|
-
assert_equal 'one, two', response.headers['set-cookie']
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
define_method "test_#{adapter}_POST_send_url_encoded_params" do
|
|
43
|
-
resp = create_connection(adapter).post do |req|
|
|
44
|
-
req.url 'echo_name'
|
|
45
|
-
req.body = {'name' => 'zack'}
|
|
46
|
-
end
|
|
47
|
-
assert_equal %("zack"), resp.body
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
define_method "test_#{adapter}_POST_send_url_encoded_nested_params" do
|
|
51
|
-
resp = create_connection(adapter).post do |req|
|
|
52
|
-
req.url 'echo_name'
|
|
53
|
-
req.body = {'name' => {'first' => 'zack'}}
|
|
54
|
-
end
|
|
55
|
-
assert_equal %({"first"=>"zack"}), resp.body
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
define_method "test_#{adapter}_POST_retrieves_the_response_headers" do
|
|
59
|
-
assert_match /text\/html/, create_connection(adapter).post('echo_name').headers['content-type']
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
define_method "test_#{adapter}_POST_sends_files" do
|
|
63
|
-
resp = create_connection(adapter).post do |req|
|
|
64
|
-
req.url 'file'
|
|
65
|
-
req.body = {'uploaded_file' => Faraday::UploadIO.new(__FILE__, 'text/x-ruby')}
|
|
66
|
-
end
|
|
67
|
-
assert_equal "file live_test.rb text/x-ruby", resp.body
|
|
68
|
-
end unless :default == adapter # isn't configured for multipart
|
|
69
|
-
|
|
70
|
-
# http://github.com/toland/patron/issues/#issue/9
|
|
71
|
-
if ENV['FORCE'] || adapter != Faraday::Adapter::Patron
|
|
72
|
-
define_method "test_#{adapter}_PUT_send_url_encoded_params" do
|
|
73
|
-
resp = create_connection(adapter).put do |req|
|
|
74
|
-
req.url 'echo_name'
|
|
75
|
-
req.body = {'name' => 'zack'}
|
|
76
|
-
end
|
|
77
|
-
assert_equal %("zack"), resp.body
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
define_method "test_#{adapter}_PUT_send_url_encoded_nested_params" do
|
|
81
|
-
resp = create_connection(adapter).put do |req|
|
|
82
|
-
req.url 'echo_name'
|
|
83
|
-
req.body = {'name' => {'first' => 'zack'}}
|
|
84
|
-
end
|
|
85
|
-
assert_equal %({"first"=>"zack"}), resp.body
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
define_method "test_#{adapter}_PUT_retrieves_the_response_headers" do
|
|
89
|
-
assert_match /text\/html/, create_connection(adapter).put('echo_name').headers['content-type']
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
define_method "test_#{adapter}_HEAD_send_url_encoded_params" do
|
|
94
|
-
resp = create_connection(adapter).head do |req|
|
|
95
|
-
req.url 'hello', 'name' => 'zack'
|
|
96
|
-
end
|
|
97
|
-
assert_match /text\/html/, resp.headers['content-type']
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
define_method "test_#{adapter}_HEAD_retrieves_no_response_body" do
|
|
101
|
-
assert_equal '', create_connection(adapter).head('hello_world').body.to_s
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
define_method "test_#{adapter}_HEAD_retrieves_the_response_headers" do
|
|
105
|
-
assert_match /text\/html/, create_connection(adapter).head('hello_world').headers['content-type']
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
define_method "test_#{adapter}_DELETE_retrieves_the_response_headers" do
|
|
109
|
-
assert_match /text\/html/, create_connection(adapter).delete('delete_with_json').headers['content-type']
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
define_method "test_#{adapter}_DELETE_retrieves_the_body" do
|
|
113
|
-
assert_match /deleted/, create_connection(adapter).delete('delete_with_json').body
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
define_method "test_#{adapter}_async_requests_clear_parallel_manager_after_running_a_single_request" do
|
|
117
|
-
connection = create_connection(adapter)
|
|
118
|
-
assert !connection.in_parallel?
|
|
119
|
-
resp = connection.get('hello_world')
|
|
120
|
-
assert !connection.in_parallel?
|
|
121
|
-
assert_equal 'hello world', connection.get('hello_world').body
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
define_method "test_#{adapter}_async_requests_uses_parallel_manager_to_run_multiple_json_requests" do
|
|
125
|
-
resp1, resp2 = nil, nil
|
|
126
|
-
|
|
127
|
-
connection = create_connection(adapter)
|
|
128
|
-
adapter = real_adapter_for(adapter)
|
|
129
|
-
|
|
130
|
-
connection.in_parallel(adapter.setup_parallel_manager) do
|
|
131
|
-
resp1 = connection.get('json')
|
|
132
|
-
resp2 = connection.get('json')
|
|
133
|
-
if adapter.supports_parallel_requests?
|
|
134
|
-
assert connection.in_parallel?
|
|
135
|
-
assert_nil resp1.body
|
|
136
|
-
assert_nil resp2.body
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
assert !connection.in_parallel?
|
|
140
|
-
assert_equal '[1,2,3]', resp1.body
|
|
141
|
-
assert_equal '[1,2,3]', resp2.body
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
if adapter.to_s == "Faraday::Adapter::EMSynchrony"
|
|
145
|
-
instance_methods.grep(%r{Faraday::Adapter::EMSynchrony}).each do |method|
|
|
146
|
-
em = method.to_s.sub %r{^test_}, "test_under_em_"
|
|
147
|
-
define_method em do
|
|
148
|
-
EM.run do
|
|
149
|
-
Fiber.new do
|
|
150
|
-
self.send method
|
|
151
|
-
EM.stop
|
|
152
|
-
end.resume
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
def create_connection(adapter)
|
|
160
|
-
if adapter == :default
|
|
161
|
-
Faraday.default_connection.tap do |conn|
|
|
162
|
-
conn.url_prefix = LIVE_SERVER
|
|
163
|
-
conn.headers['X-Faraday-Adapter'] = adapter.to_s
|
|
164
|
-
end
|
|
165
|
-
else
|
|
166
|
-
Faraday::Connection.new LIVE_SERVER, :headers => {'X-Faraday-Adapter' => adapter.to_s} do |b|
|
|
167
|
-
b.request :multipart
|
|
168
|
-
b.request :url_encoded
|
|
169
|
-
b.use adapter
|
|
170
|
-
end
|
|
171
|
-
end.tap do |conn|
|
|
172
|
-
target = conn.builder.handlers.last
|
|
173
|
-
conn.builder.insert_before target, Faraday::Response::RaiseError
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
def real_adapter_for(adapter)
|
|
178
|
-
if adapter == :default
|
|
179
|
-
Faraday::Adapter.lookup_module(Faraday.default_adapter)
|
|
180
|
-
else
|
|
181
|
-
adapter
|
|
182
|
-
end
|
|
183
|
-
end
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
|
-
end
|