faraday 0.15.4 → 1.6.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.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +380 -0
  3. data/LICENSE.md +1 -1
  4. data/README.md +16 -344
  5. data/Rakefile +7 -0
  6. data/examples/client_spec.rb +65 -0
  7. data/examples/client_test.rb +79 -0
  8. data/lib/faraday.rb +127 -190
  9. data/lib/faraday/adapter.rb +72 -22
  10. data/lib/faraday/adapter/test.rb +86 -53
  11. data/lib/faraday/adapter/typhoeus.rb +4 -1
  12. data/lib/faraday/adapter_registry.rb +30 -0
  13. data/lib/faraday/autoload.rb +39 -36
  14. data/lib/faraday/connection.rb +320 -183
  15. data/lib/faraday/dependency_loader.rb +37 -0
  16. data/lib/faraday/encoders/flat_params_encoder.rb +105 -0
  17. data/lib/faraday/encoders/nested_params_encoder.rb +176 -0
  18. data/lib/faraday/error.rb +123 -37
  19. data/lib/faraday/file_part.rb +128 -0
  20. data/lib/faraday/logging/formatter.rb +105 -0
  21. data/lib/faraday/methods.rb +6 -0
  22. data/lib/faraday/middleware.rb +19 -25
  23. data/lib/faraday/middleware_registry.rb +129 -0
  24. data/lib/faraday/options.rb +39 -194
  25. data/lib/faraday/options/connection_options.rb +22 -0
  26. data/lib/faraday/options/env.rb +181 -0
  27. data/lib/faraday/options/proxy_options.rb +32 -0
  28. data/lib/faraday/options/request_options.rb +22 -0
  29. data/lib/faraday/options/ssl_options.rb +59 -0
  30. data/lib/faraday/param_part.rb +53 -0
  31. data/lib/faraday/parameters.rb +4 -197
  32. data/lib/faraday/rack_builder.rb +77 -65
  33. data/lib/faraday/request.rb +86 -44
  34. data/lib/faraday/request/authorization.rb +44 -30
  35. data/lib/faraday/request/basic_authentication.rb +14 -7
  36. data/lib/faraday/request/instrumentation.rb +45 -27
  37. data/lib/faraday/request/multipart.rb +86 -48
  38. data/lib/faraday/request/retry.rb +198 -169
  39. data/lib/faraday/request/token_authentication.rb +15 -10
  40. data/lib/faraday/request/url_encoded.rb +43 -23
  41. data/lib/faraday/response.rb +27 -23
  42. data/lib/faraday/response/logger.rb +22 -69
  43. data/lib/faraday/response/raise_error.rb +49 -14
  44. data/lib/faraday/utils.rb +38 -247
  45. data/lib/faraday/utils/headers.rb +139 -0
  46. data/lib/faraday/utils/params_hash.rb +61 -0
  47. data/lib/faraday/version.rb +5 -0
  48. data/spec/external_adapters/faraday_specs_setup.rb +14 -0
  49. data/spec/faraday/adapter/em_http_spec.rb +49 -0
  50. data/spec/faraday/adapter/em_synchrony_spec.rb +18 -0
  51. data/spec/faraday/adapter/excon_spec.rb +49 -0
  52. data/spec/faraday/adapter/httpclient_spec.rb +73 -0
  53. data/spec/faraday/adapter/net_http_spec.rb +64 -0
  54. data/spec/faraday/adapter/patron_spec.rb +18 -0
  55. data/spec/faraday/adapter/rack_spec.rb +8 -0
  56. data/spec/faraday/adapter/test_spec.rb +260 -0
  57. data/spec/faraday/adapter/typhoeus_spec.rb +7 -0
  58. data/spec/faraday/adapter_registry_spec.rb +28 -0
  59. data/spec/faraday/adapter_spec.rb +55 -0
  60. data/spec/faraday/composite_read_io_spec.rb +80 -0
  61. data/spec/faraday/connection_spec.rb +736 -0
  62. data/spec/faraday/error_spec.rb +60 -0
  63. data/spec/faraday/middleware_spec.rb +52 -0
  64. data/spec/faraday/options/env_spec.rb +70 -0
  65. data/spec/faraday/options/options_spec.rb +297 -0
  66. data/spec/faraday/options/proxy_options_spec.rb +44 -0
  67. data/spec/faraday/options/request_options_spec.rb +19 -0
  68. data/spec/faraday/params_encoders/flat_spec.rb +42 -0
  69. data/spec/faraday/params_encoders/nested_spec.rb +142 -0
  70. data/spec/faraday/rack_builder_spec.rb +345 -0
  71. data/spec/faraday/request/authorization_spec.rb +88 -0
  72. data/spec/faraday/request/instrumentation_spec.rb +76 -0
  73. data/spec/faraday/request/multipart_spec.rb +302 -0
  74. data/spec/faraday/request/retry_spec.rb +242 -0
  75. data/spec/faraday/request/url_encoded_spec.rb +83 -0
  76. data/spec/faraday/request_spec.rb +120 -0
  77. data/spec/faraday/response/logger_spec.rb +220 -0
  78. data/spec/faraday/response/middleware_spec.rb +68 -0
  79. data/spec/faraday/response/raise_error_spec.rb +169 -0
  80. data/spec/faraday/response_spec.rb +75 -0
  81. data/spec/faraday/utils/headers_spec.rb +82 -0
  82. data/spec/faraday/utils_spec.rb +56 -0
  83. data/spec/faraday_spec.rb +37 -0
  84. data/spec/spec_helper.rb +132 -0
  85. data/spec/support/disabling_stub.rb +14 -0
  86. data/spec/support/fake_safe_buffer.rb +15 -0
  87. data/spec/support/helper_methods.rb +133 -0
  88. data/spec/support/shared_examples/adapter.rb +105 -0
  89. data/spec/support/shared_examples/params_encoder.rb +18 -0
  90. data/spec/support/shared_examples/request_method.rb +262 -0
  91. data/spec/support/streaming_response_checker.rb +35 -0
  92. data/spec/support/webmock_rack_app.rb +68 -0
  93. metadata +206 -19
  94. data/lib/faraday/adapter/em_http.rb +0 -243
  95. data/lib/faraday/adapter/em_http_ssl_patch.rb +0 -56
  96. data/lib/faraday/adapter/em_synchrony.rb +0 -106
  97. data/lib/faraday/adapter/em_synchrony/parallel_manager.rb +0 -66
  98. data/lib/faraday/adapter/excon.rb +0 -82
  99. data/lib/faraday/adapter/httpclient.rb +0 -128
  100. data/lib/faraday/adapter/net_http.rb +0 -152
  101. data/lib/faraday/adapter/net_http_persistent.rb +0 -68
  102. data/lib/faraday/adapter/patron.rb +0 -95
  103. data/lib/faraday/adapter/rack.rb +0 -58
  104. data/lib/faraday/upload_io.rb +0 -67
@@ -0,0 +1,262 @@
1
+ # frozen_string_literal: true
2
+
3
+ shared_examples 'proxy examples' do
4
+ it 'handles requests with proxy' do
5
+ res = conn.public_send(http_method, '/')
6
+
7
+ expect(res.status).to eq(200)
8
+ end
9
+
10
+ it 'handles proxy failures' do
11
+ request_stub.to_return(status: 407)
12
+
13
+ expect { conn.public_send(http_method, '/') }.to raise_error(Faraday::ProxyAuthError)
14
+ end
15
+ end
16
+
17
+ shared_examples 'a request method' do |http_method|
18
+ let(:query_or_body) { method_with_body?(http_method) ? :body : :query }
19
+ let(:response) { conn.public_send(http_method, '/') }
20
+
21
+ unless http_method == :head && feature?(:skip_response_body_on_head)
22
+ it 'retrieves the response body' do
23
+ res_body = 'test'
24
+ request_stub.to_return(body: res_body)
25
+ expect(conn.public_send(http_method, '/').body).to eq(res_body)
26
+ end
27
+ end
28
+
29
+ it 'handles headers with multiple values' do
30
+ request_stub.to_return(headers: { 'Set-Cookie' => 'name=value' })
31
+ expect(response.headers['set-cookie']).to eq('name=value')
32
+ end
33
+
34
+ it 'retrieves the response headers' do
35
+ request_stub.to_return(headers: { 'Content-Type' => 'text/plain' })
36
+ expect(response.headers['Content-Type']).to match(%r{text/plain})
37
+ expect(response.headers['content-type']).to match(%r{text/plain})
38
+ end
39
+
40
+ it 'sends user agent' do
41
+ request_stub.with(headers: { 'User-Agent' => 'Agent Faraday' })
42
+ conn.public_send(http_method, '/', nil, user_agent: 'Agent Faraday')
43
+ end
44
+
45
+ it 'represents empty body response as blank string' do
46
+ expect(response.body).to eq('')
47
+ end
48
+
49
+ it 'handles connection error' do
50
+ request_stub.disable
51
+ expect { conn.public_send(http_method, 'http://localhost:4') }.to raise_error(Faraday::ConnectionFailed)
52
+ end
53
+
54
+ on_feature :local_socket_binding do
55
+ it 'binds local socket' do
56
+ stub_request(http_method, 'http://example.com')
57
+
58
+ host = '1.2.3.4'
59
+ port = 1234
60
+ conn_options[:request] = { bind: { host: host, port: port } }
61
+
62
+ conn.public_send(http_method, '/')
63
+
64
+ expect(conn.options[:bind][:host]).to eq(host)
65
+ expect(conn.options[:bind][:port]).to eq(port)
66
+ end
67
+ end
68
+
69
+ # context 'when wrong ssl certificate is provided' do
70
+ # let(:ca_file_path) { 'tmp/faraday-different-ca-cert.crt' }
71
+ # before { conn_options.merge!(ssl: { ca_file: ca_file_path }) }
72
+ #
73
+ # it do
74
+ # expect { conn.public_send(http_method, '/') }.to raise_error(Faraday::SSLError) # do |ex|
75
+ # expect(ex.message).to include?('certificate')
76
+ # end
77
+ # end
78
+ # end
79
+
80
+ on_feature :request_body_on_query_methods do
81
+ it 'sends request body' do
82
+ request_stub.with(Hash[:body, 'test'])
83
+ res = if query_or_body == :body
84
+ conn.public_send(http_method, '/', 'test')
85
+ else
86
+ conn.public_send(http_method, '/') do |req|
87
+ req.body = 'test'
88
+ end
89
+ end
90
+ expect(res.env.request_body).to eq('test')
91
+ end
92
+ end
93
+
94
+ it 'sends url encoded parameters' do
95
+ payload = { name: 'zack' }
96
+ request_stub.with(Hash[query_or_body, payload])
97
+ res = conn.public_send(http_method, '/', payload)
98
+ if query_or_body == :query
99
+ expect(res.env.request_body).to be_nil
100
+ else
101
+ expect(res.env.request_body).to eq('name=zack')
102
+ end
103
+ end
104
+
105
+ it 'sends url encoded nested parameters' do
106
+ payload = { name: { first: 'zack' } }
107
+ request_stub.with(Hash[query_or_body, payload])
108
+ conn.public_send(http_method, '/', payload)
109
+ end
110
+
111
+ # TODO: This needs reimplementation: see https://github.com/lostisland/faraday/issues/718
112
+ # Should raise Faraday::TimeoutError
113
+ it 'supports timeout option' do
114
+ conn_options[:request] = { timeout: 1 }
115
+ request_stub.to_timeout
116
+ exc = adapter == 'NetHttp' ? Faraday::ConnectionFailed : Faraday::TimeoutError
117
+ expect { conn.public_send(http_method, '/') }.to raise_error(exc)
118
+ end
119
+
120
+ # TODO: This needs reimplementation: see https://github.com/lostisland/faraday/issues/718
121
+ # Should raise Faraday::ConnectionFailed
122
+ it 'supports open_timeout option' do
123
+ conn_options[:request] = { open_timeout: 1 }
124
+ request_stub.to_timeout
125
+ exc = adapter == 'NetHttp' ? Faraday::ConnectionFailed : Faraday::TimeoutError
126
+ expect { conn.public_send(http_method, '/') }.to raise_error(exc)
127
+ end
128
+
129
+ # Can't send files on get, head and delete methods
130
+ if method_with_body?(http_method)
131
+ it 'sends files' do
132
+ payload = { uploaded_file: multipart_file }
133
+ request_stub.with(headers: { 'Content-Type' => %r{\Amultipart/form-data} }) do |request|
134
+ # WebMock does not support matching body for multipart/form-data requests yet :(
135
+ # https://github.com/bblimke/webmock/issues/623
136
+ request.body.include?('RubyMultipartPost')
137
+ end
138
+ conn.public_send(http_method, '/', payload)
139
+ end
140
+ end
141
+
142
+ on_feature :reason_phrase_parse do
143
+ it 'parses the reason phrase' do
144
+ request_stub.to_return(status: [200, 'OK'])
145
+ expect(response.reason_phrase).to eq('OK')
146
+ end
147
+ end
148
+
149
+ on_feature :compression do
150
+ # Accept-Encoding header not sent for HEAD requests as body is not expected in the response.
151
+ unless http_method == :head
152
+ it 'handles gzip compression' do
153
+ request_stub.with(headers: { 'Accept-Encoding' => /\bgzip\b/ })
154
+ conn.public_send(http_method, '/')
155
+ end
156
+
157
+ it 'handles deflate compression' do
158
+ request_stub.with(headers: { 'Accept-Encoding' => /\bdeflate\b/ })
159
+ conn.public_send(http_method, '/')
160
+ end
161
+ end
162
+ end
163
+
164
+ on_feature :streaming do
165
+ describe 'streaming' do
166
+ let(:streamed) { [] }
167
+
168
+ context 'when response is empty' do
169
+ it do
170
+ conn.public_send(http_method, '/') do |req|
171
+ req.options.on_data = proc { |*args| streamed << args }
172
+ end
173
+
174
+ expect(streamed).to eq([['', 0]])
175
+ end
176
+ end
177
+
178
+ context 'when response contains big data' do
179
+ before { request_stub.to_return(body: big_string) }
180
+
181
+ it 'handles streaming' do
182
+ response = conn.public_send(http_method, '/') do |req|
183
+ req.options.on_data = proc { |*args| streamed << args }
184
+ end
185
+
186
+ expect(response.body).to eq('')
187
+ check_streaming_response(streamed, chunk_size: 16 * 1024)
188
+ end
189
+ end
190
+ end
191
+ end
192
+
193
+ on_feature :parallel do
194
+ context 'with parallel setup' do
195
+ before do
196
+ @resp1 = nil
197
+ @resp2 = nil
198
+ @payload1 = { a: '1' }
199
+ @payload2 = { b: '2' }
200
+
201
+ request_stub
202
+ .with(Hash[query_or_body, @payload1])
203
+ .to_return(body: @payload1.to_json)
204
+
205
+ stub_request(http_method, remote)
206
+ .with(Hash[query_or_body, @payload2])
207
+ .to_return(body: @payload2.to_json)
208
+
209
+ conn.in_parallel do
210
+ @resp1 = conn.public_send(http_method, '/', @payload1)
211
+ @resp2 = conn.public_send(http_method, '/', @payload2)
212
+
213
+ expect(conn.in_parallel?).to be_truthy
214
+ expect(@resp1.body).to be_nil
215
+ expect(@resp2.body).to be_nil
216
+ end
217
+
218
+ expect(conn.in_parallel?).to be_falsey
219
+ end
220
+
221
+ it 'handles parallel requests status' do
222
+ expect(@resp1&.status).to eq(200)
223
+ expect(@resp2&.status).to eq(200)
224
+ end
225
+
226
+ unless http_method == :head && feature?(:skip_response_body_on_head)
227
+ it 'handles parallel requests body' do
228
+ expect(@resp1&.body).to eq(@payload1.to_json)
229
+ expect(@resp2&.body).to eq(@payload2.to_json)
230
+ end
231
+ end
232
+ end
233
+ end
234
+
235
+ context 'when a proxy is provided as option' do
236
+ before do
237
+ conn_options[:proxy] = 'http://env-proxy.com:80'
238
+ end
239
+
240
+ include_examples 'proxy examples'
241
+ end
242
+
243
+ context 'when http_proxy env variable is set' do
244
+ let(:proxy_url) { 'http://env-proxy.com:80' }
245
+
246
+ around do |example|
247
+ with_env 'http_proxy' => proxy_url do
248
+ example.run
249
+ end
250
+ end
251
+
252
+ include_examples 'proxy examples'
253
+
254
+ context 'when the env proxy is ignored' do
255
+ around do |example|
256
+ with_env_proxy_disabled(&example)
257
+ end
258
+
259
+ include_examples 'proxy examples'
260
+ end
261
+ end
262
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faraday
4
+ module StreamingResponseChecker
5
+ def check_streaming_response(streamed, options = {})
6
+ opts = {
7
+ prefix: '',
8
+ streaming?: true
9
+ }.merge(options)
10
+
11
+ expected_response = opts[:prefix] + big_string
12
+
13
+ chunks, sizes = streamed.transpose
14
+
15
+ # Check that the total size of the chunks (via the last size returned)
16
+ # is the same size as the expected_response
17
+ expect(sizes.last).to eq(expected_response.bytesize)
18
+
19
+ start_index = 0
20
+ expected_chunks = []
21
+ chunks.each do |actual_chunk|
22
+ expected_chunk = expected_response[start_index..((start_index + actual_chunk.bytesize) - 1)]
23
+ expected_chunks << expected_chunk
24
+ start_index += expected_chunk.bytesize
25
+ end
26
+
27
+ # it's easier to read a smaller portion, so we check that first
28
+ expect(expected_chunks[0][0..255]).to eq(chunks[0][0..255])
29
+
30
+ [expected_chunks, chunks].transpose.each do |expected, actual|
31
+ expect(actual).to eq(expected)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Rack app used to test the Rack adapter.
4
+ # Uses Webmock to check if requests are registered, in which case it returns
5
+ # the registered response.
6
+ class WebmockRackApp
7
+ def call(env)
8
+ req_signature = WebMock::RequestSignature.new(
9
+ req_method(env),
10
+ req_uri(env),
11
+ body: req_body(env),
12
+ headers: req_headers(env)
13
+ )
14
+
15
+ WebMock::RequestRegistry
16
+ .instance
17
+ .requested_signatures
18
+ .put(req_signature)
19
+
20
+ process_response(req_signature)
21
+ end
22
+
23
+ def req_method(env)
24
+ env['REQUEST_METHOD'].downcase.to_sym
25
+ end
26
+
27
+ def req_uri(env)
28
+ scheme = env['rack.url_scheme']
29
+ host = env['SERVER_NAME']
30
+ port = env['SERVER_PORT']
31
+ path = env['PATH_INFO']
32
+ query = env['QUERY_STRING']
33
+
34
+ url = +"#{scheme}://#{host}:#{port}#{path}"
35
+ url += "?#{query}" if query
36
+
37
+ uri = WebMock::Util::URI.heuristic_parse(url)
38
+ uri.path = uri.normalized_path.gsub('[^:]//', '/')
39
+ uri
40
+ end
41
+
42
+ def req_headers(env)
43
+ http_headers = env.select { |k, _| k.start_with?('HTTP_') }
44
+ .map { |k, v| [k[5..-1], v] }
45
+ .to_h
46
+
47
+ special_headers = Faraday::Adapter::Rack::SPECIAL_HEADERS
48
+ http_headers.merge(env.select { |k, _| special_headers.include?(k) })
49
+ end
50
+
51
+ def req_body(env)
52
+ env['rack.input'].read
53
+ end
54
+
55
+ def process_response(req_signature)
56
+ res = WebMock::StubRegistry.instance.response_for_request(req_signature)
57
+
58
+ if res.nil? && req_signature.uri.host == 'localhost'
59
+ raise Faraday::ConnectionFailed, 'Trying to connect to localhost'
60
+ end
61
+
62
+ raise WebMock::NetConnectNotAllowedError, req_signature unless res
63
+
64
+ raise Faraday::TimeoutError if res.should_timeout
65
+
66
+ [res.status[0], res.headers || {}, [res.body || '']]
67
+ end
68
+ end
metadata CHANGED
@@ -1,15 +1,129 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.4
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
- - Rick Olson
7
+ - "@technoweenie"
8
+ - "@iMacTia"
9
+ - "@olleolleolle"
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2018-11-27 00:00:00.000000000 Z
13
+ date: 2021-08-01 00:00:00.000000000 Z
12
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: faraday-em_http
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: faraday-em_synchrony
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '1.0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: faraday-excon
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.1'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.1'
57
+ - !ruby/object:Gem::Dependency
58
+ name: faraday-httpclient
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: 1.0.1
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: 1.0.1
71
+ - !ruby/object:Gem::Dependency
72
+ name: faraday-net_http
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '1.0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '1.0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: faraday-net_http_persistent
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '1.1'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '1.1'
99
+ - !ruby/object:Gem::Dependency
100
+ name: faraday-patron
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '1.0'
106
+ type: :runtime
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '1.0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: faraday-rack
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '1.0'
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '1.0'
13
127
  - !ruby/object:Gem::Dependency
14
128
  name: multipart-post
15
129
  requirement: !ruby/object:Gem::Requirement
@@ -30,33 +144,55 @@ dependencies:
30
144
  - - "<"
31
145
  - !ruby/object:Gem::Version
32
146
  version: '3'
147
+ - !ruby/object:Gem::Dependency
148
+ name: ruby2_keywords
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: 0.0.4
154
+ type: :runtime
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: 0.0.4
33
161
  description:
34
162
  email: technoweenie@gmail.com
35
163
  executables: []
36
164
  extensions: []
37
165
  extra_rdoc_files: []
38
166
  files:
167
+ - CHANGELOG.md
39
168
  - LICENSE.md
40
169
  - README.md
170
+ - Rakefile
171
+ - examples/client_spec.rb
172
+ - examples/client_test.rb
41
173
  - lib/faraday.rb
42
174
  - lib/faraday/adapter.rb
43
- - lib/faraday/adapter/em_http.rb
44
- - lib/faraday/adapter/em_http_ssl_patch.rb
45
- - lib/faraday/adapter/em_synchrony.rb
46
- - lib/faraday/adapter/em_synchrony/parallel_manager.rb
47
- - lib/faraday/adapter/excon.rb
48
- - lib/faraday/adapter/httpclient.rb
49
- - lib/faraday/adapter/net_http.rb
50
- - lib/faraday/adapter/net_http_persistent.rb
51
- - lib/faraday/adapter/patron.rb
52
- - lib/faraday/adapter/rack.rb
53
175
  - lib/faraday/adapter/test.rb
54
176
  - lib/faraday/adapter/typhoeus.rb
177
+ - lib/faraday/adapter_registry.rb
55
178
  - lib/faraday/autoload.rb
56
179
  - lib/faraday/connection.rb
180
+ - lib/faraday/dependency_loader.rb
181
+ - lib/faraday/encoders/flat_params_encoder.rb
182
+ - lib/faraday/encoders/nested_params_encoder.rb
57
183
  - lib/faraday/error.rb
184
+ - lib/faraday/file_part.rb
185
+ - lib/faraday/logging/formatter.rb
186
+ - lib/faraday/methods.rb
58
187
  - lib/faraday/middleware.rb
188
+ - lib/faraday/middleware_registry.rb
59
189
  - lib/faraday/options.rb
190
+ - lib/faraday/options/connection_options.rb
191
+ - lib/faraday/options/env.rb
192
+ - lib/faraday/options/proxy_options.rb
193
+ - lib/faraday/options/request_options.rb
194
+ - lib/faraday/options/ssl_options.rb
195
+ - lib/faraday/param_part.rb
60
196
  - lib/faraday/parameters.rb
61
197
  - lib/faraday/rack_builder.rb
62
198
  - lib/faraday/request.rb
@@ -70,29 +206,80 @@ files:
70
206
  - lib/faraday/response.rb
71
207
  - lib/faraday/response/logger.rb
72
208
  - lib/faraday/response/raise_error.rb
73
- - lib/faraday/upload_io.rb
74
209
  - lib/faraday/utils.rb
75
- homepage: https://github.com/lostisland/faraday
210
+ - lib/faraday/utils/headers.rb
211
+ - lib/faraday/utils/params_hash.rb
212
+ - lib/faraday/version.rb
213
+ - spec/external_adapters/faraday_specs_setup.rb
214
+ - spec/faraday/adapter/em_http_spec.rb
215
+ - spec/faraday/adapter/em_synchrony_spec.rb
216
+ - spec/faraday/adapter/excon_spec.rb
217
+ - spec/faraday/adapter/httpclient_spec.rb
218
+ - spec/faraday/adapter/net_http_spec.rb
219
+ - spec/faraday/adapter/patron_spec.rb
220
+ - spec/faraday/adapter/rack_spec.rb
221
+ - spec/faraday/adapter/test_spec.rb
222
+ - spec/faraday/adapter/typhoeus_spec.rb
223
+ - spec/faraday/adapter_registry_spec.rb
224
+ - spec/faraday/adapter_spec.rb
225
+ - spec/faraday/composite_read_io_spec.rb
226
+ - spec/faraday/connection_spec.rb
227
+ - spec/faraday/error_spec.rb
228
+ - spec/faraday/middleware_spec.rb
229
+ - spec/faraday/options/env_spec.rb
230
+ - spec/faraday/options/options_spec.rb
231
+ - spec/faraday/options/proxy_options_spec.rb
232
+ - spec/faraday/options/request_options_spec.rb
233
+ - spec/faraday/params_encoders/flat_spec.rb
234
+ - spec/faraday/params_encoders/nested_spec.rb
235
+ - spec/faraday/rack_builder_spec.rb
236
+ - spec/faraday/request/authorization_spec.rb
237
+ - spec/faraday/request/instrumentation_spec.rb
238
+ - spec/faraday/request/multipart_spec.rb
239
+ - spec/faraday/request/retry_spec.rb
240
+ - spec/faraday/request/url_encoded_spec.rb
241
+ - spec/faraday/request_spec.rb
242
+ - spec/faraday/response/logger_spec.rb
243
+ - spec/faraday/response/middleware_spec.rb
244
+ - spec/faraday/response/raise_error_spec.rb
245
+ - spec/faraday/response_spec.rb
246
+ - spec/faraday/utils/headers_spec.rb
247
+ - spec/faraday/utils_spec.rb
248
+ - spec/faraday_spec.rb
249
+ - spec/spec_helper.rb
250
+ - spec/support/disabling_stub.rb
251
+ - spec/support/fake_safe_buffer.rb
252
+ - spec/support/helper_methods.rb
253
+ - spec/support/shared_examples/adapter.rb
254
+ - spec/support/shared_examples/params_encoder.rb
255
+ - spec/support/shared_examples/request_method.rb
256
+ - spec/support/streaming_response_checker.rb
257
+ - spec/support/webmock_rack_app.rb
258
+ homepage: https://lostisland.github.io/faraday
76
259
  licenses:
77
260
  - MIT
78
- metadata: {}
261
+ metadata:
262
+ homepage_uri: https://lostisland.github.io/faraday
263
+ changelog_uri: https://github.com/lostisland/faraday/releases/tag/v1.6.0
264
+ source_code_uri: https://github.com/lostisland/faraday
265
+ bug_tracker_uri: https://github.com/lostisland/faraday/issues
79
266
  post_install_message:
80
267
  rdoc_options: []
81
268
  require_paths:
82
269
  - lib
270
+ - spec/external_adapters
83
271
  required_ruby_version: !ruby/object:Gem::Requirement
84
272
  requirements:
85
273
  - - ">="
86
274
  - !ruby/object:Gem::Version
87
- version: '1.9'
275
+ version: '2.4'
88
276
  required_rubygems_version: !ruby/object:Gem::Requirement
89
277
  requirements:
90
278
  - - ">="
91
279
  - !ruby/object:Gem::Version
92
280
  version: '0'
93
281
  requirements: []
94
- rubyforge_project:
95
- rubygems_version: 2.7.7
282
+ rubygems_version: 3.0.3.1
96
283
  signing_key:
97
284
  specification_version: 4
98
285
  summary: HTTP/REST API client library.