faraday 0.9.1 → 0.17.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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +196 -0
- data/LICENSE.md +1 -1
- data/README.md +192 -28
- data/Rakefile +6 -64
- data/lib/faraday/adapter/em_http.rb +17 -11
- data/lib/faraday/adapter/em_http_ssl_patch.rb +1 -1
- data/lib/faraday/adapter/em_synchrony.rb +19 -5
- data/lib/faraday/adapter/excon.rb +13 -11
- data/lib/faraday/adapter/httpclient.rb +31 -9
- data/lib/faraday/adapter/net_http.rb +36 -14
- data/lib/faraday/adapter/net_http_persistent.rb +37 -17
- data/lib/faraday/adapter/patron.rb +44 -21
- data/lib/faraday/adapter/rack.rb +1 -1
- data/lib/faraday/adapter/test.rb +79 -28
- data/lib/faraday/adapter/typhoeus.rb +4 -115
- data/lib/faraday/adapter.rb +10 -1
- data/lib/faraday/autoload.rb +1 -1
- data/lib/faraday/connection.rb +72 -20
- data/lib/faraday/deprecate.rb +101 -0
- data/lib/faraday/error.rb +90 -24
- data/lib/faraday/options.rb +43 -20
- data/lib/faraday/parameters.rb +56 -39
- data/lib/faraday/rack_builder.rb +27 -2
- data/lib/faraday/request/authorization.rb +1 -2
- data/lib/faraday/request/multipart.rb +7 -2
- data/lib/faraday/request/retry.rb +84 -19
- data/lib/faraday/request.rb +22 -0
- data/lib/faraday/response/logger.rb +29 -8
- data/lib/faraday/response/raise_error.rb +7 -3
- data/lib/faraday/response.rb +9 -5
- data/lib/faraday/utils.rb +32 -3
- data/lib/faraday.rb +14 -34
- data/spec/faraday/deprecate_spec.rb +69 -0
- data/spec/faraday/error_spec.rb +102 -0
- data/spec/faraday/response/raise_error_spec.rb +95 -0
- data/spec/spec_helper.rb +104 -0
- data/test/adapters/em_http_test.rb +10 -0
- data/test/adapters/em_synchrony_test.rb +22 -10
- data/test/adapters/excon_test.rb +10 -0
- data/test/adapters/httpclient_test.rb +14 -1
- data/test/adapters/integration.rb +17 -8
- data/test/adapters/logger_test.rb +65 -11
- data/test/adapters/net_http_persistent_test.rb +96 -2
- data/test/adapters/net_http_test.rb +67 -2
- data/test/adapters/patron_test.rb +28 -8
- data/test/adapters/rack_test.rb +8 -1
- data/test/adapters/test_middleware_test.rb +46 -3
- data/test/adapters/typhoeus_test.rb +19 -9
- data/test/composite_read_io_test.rb +16 -18
- data/test/connection_test.rb +294 -78
- data/test/env_test.rb +55 -5
- data/test/helper.rb +11 -17
- data/test/middleware/retry_test.rb +115 -10
- data/test/middleware_stack_test.rb +97 -10
- data/test/options_test.rb +97 -16
- data/test/parameters_test.rb +94 -1
- data/test/request_middleware_test.rb +24 -40
- data/test/response_middleware_test.rb +4 -4
- data/test/utils_test.rb +40 -0
- metadata +21 -66
- data/.document +0 -6
- data/CONTRIBUTING.md +0 -36
- data/Gemfile +0 -25
- data/faraday.gemspec +0 -34
- data/script/cached-bundle +0 -46
- data/script/console +0 -7
- data/script/generate_certs +0 -42
- data/script/package +0 -7
- data/script/proxy-server +0 -42
- data/script/release +0 -17
- data/script/s3-put +0 -71
- data/script/server +0 -36
- data/script/test +0 -172
data/test/parameters_test.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.expand_path("../helper", __FILE__)
|
2
|
+
require "rack/utils"
|
2
3
|
|
3
4
|
class TestParameters < Faraday::TestCase
|
4
5
|
# emulates ActiveSupport::SafeBuffer#gsub
|
@@ -55,10 +56,102 @@ class TestParameters < Faraday::TestCase
|
|
55
56
|
end
|
56
57
|
|
57
58
|
def test_encode_nil_nested
|
58
|
-
assert_equal "a
|
59
|
+
assert_equal "a", Faraday::NestedParamsEncoder.encode("a" => nil)
|
59
60
|
end
|
60
61
|
|
61
62
|
def test_encode_nil_flat
|
62
63
|
assert_equal "a", Faraday::FlatParamsEncoder.encode("a" => nil)
|
63
64
|
end
|
65
|
+
|
66
|
+
def test_decode_nested_array_rack_compat
|
67
|
+
query = "a[][one]=1&a[][two]=2&a[][one]=3&a[][two]=4"
|
68
|
+
expected = Rack::Utils.parse_nested_query(query)
|
69
|
+
assert_equal expected, Faraday::NestedParamsEncoder.decode(query)
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_decode_nested_array_mixed_types
|
73
|
+
query = "a[][one]=1&a[]=2&a[]=&a[]"
|
74
|
+
expected = Rack::Utils.parse_nested_query(query)
|
75
|
+
assert_equal expected, Faraday::NestedParamsEncoder.decode(query)
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_decode_nested_ignores_invalid_array
|
79
|
+
query = "[][a]=1&b=2"
|
80
|
+
expected = {"a" => "1", "b" => "2"}
|
81
|
+
assert_equal expected, Faraday::NestedParamsEncoder.decode(query)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_decode_nested_ignores_repeated_array_notation
|
85
|
+
query = "a[][][]=1"
|
86
|
+
expected = {"a" => ["1"]}
|
87
|
+
assert_equal expected, Faraday::NestedParamsEncoder.decode(query)
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_decode_nested_ignores_malformed_keys
|
91
|
+
query = "=1&[]=2"
|
92
|
+
expected = {}
|
93
|
+
assert_equal expected, Faraday::NestedParamsEncoder.decode(query)
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_decode_nested_subkeys_dont_have_to_be_in_brackets
|
97
|
+
query = "a[b]c[d]e=1"
|
98
|
+
expected = {"a" => {"b" => {"c" => {"d" => {"e" => "1"}}}}}
|
99
|
+
assert_equal expected, Faraday::NestedParamsEncoder.decode(query)
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_decode_nested_raises_error_when_expecting_hash
|
103
|
+
error = assert_raises TypeError do
|
104
|
+
Faraday::NestedParamsEncoder.decode("a=1&a[b]=2")
|
105
|
+
end
|
106
|
+
assert_equal "expected Hash (got String) for param `a'", error.message
|
107
|
+
|
108
|
+
error = assert_raises TypeError do
|
109
|
+
Faraday::NestedParamsEncoder.decode("a[]=1&a[b]=2")
|
110
|
+
end
|
111
|
+
assert_equal "expected Hash (got Array) for param `a'", error.message
|
112
|
+
|
113
|
+
error = assert_raises TypeError do
|
114
|
+
Faraday::NestedParamsEncoder.decode("a[b]=1&a[]=2")
|
115
|
+
end
|
116
|
+
assert_equal "expected Array (got Hash) for param `a'", error.message
|
117
|
+
|
118
|
+
error = assert_raises TypeError do
|
119
|
+
Faraday::NestedParamsEncoder.decode("a=1&a[]=2")
|
120
|
+
end
|
121
|
+
assert_equal "expected Array (got String) for param `a'", error.message
|
122
|
+
|
123
|
+
error = assert_raises TypeError do
|
124
|
+
Faraday::NestedParamsEncoder.decode("a[b]=1&a[b][c]=2")
|
125
|
+
end
|
126
|
+
assert_equal "expected Hash (got String) for param `b'", error.message
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_decode_nested_final_value_overrides_any_type
|
130
|
+
query = "a[b][c]=1&a[b]=2"
|
131
|
+
expected = {"a" => {"b" => "2"}}
|
132
|
+
assert_equal expected, Faraday::NestedParamsEncoder.decode(query)
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_encode_rack_compat_nested
|
136
|
+
params = { :a => [{:one => "1", :two => "2"}, "3", ""] }
|
137
|
+
expected = Rack::Utils.build_nested_query(params)
|
138
|
+
assert_equal expected.split("&").sort,
|
139
|
+
Faraday::Utils.unescape(Faraday::NestedParamsEncoder.encode(params)).split("&").sort
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_encode_empty_string_array_value
|
143
|
+
expected = 'baz=&foo%5Bbar%5D='
|
144
|
+
assert_equal expected, Faraday::NestedParamsEncoder.encode(foo: {bar: ''}, baz: '')
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_encode_nil_array_value
|
148
|
+
expected = 'baz&foo%5Bbar%5D'
|
149
|
+
assert_equal expected, Faraday::NestedParamsEncoder.encode(foo: {bar: nil}, baz: nil)
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_encode_empty_array_value
|
153
|
+
expected = 'baz%5B%5D&foo%5Bbar%5D%5B%5D'
|
154
|
+
Faraday::NestedParamsEncoder.encode(foo: { bar: [] }, baz: [])
|
155
|
+
assert_equal expected, Faraday::NestedParamsEncoder.encode(foo: { bar: [] }, baz: [])
|
156
|
+
end
|
64
157
|
end
|
@@ -4,8 +4,8 @@ require File.expand_path('../helper', __FILE__)
|
|
4
4
|
Faraday::CompositeReadIO.class_eval { attr_reader :ios }
|
5
5
|
|
6
6
|
class RequestMiddlewareTest < Faraday::TestCase
|
7
|
-
def
|
8
|
-
|
7
|
+
def conn
|
8
|
+
Faraday.new do |b|
|
9
9
|
b.request :multipart
|
10
10
|
b.request :url_encoded
|
11
11
|
b.adapter :test do |stub|
|
@@ -17,53 +17,39 @@ class RequestMiddlewareTest < Faraday::TestCase
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
def with_utf8
|
21
|
-
if defined?(RUBY_VERSION) && RUBY_VERSION.match(/1.8.\d/)
|
22
|
-
begin
|
23
|
-
previous_kcode = $KCODE
|
24
|
-
$KCODE = "UTF8"
|
25
|
-
yield
|
26
|
-
ensure
|
27
|
-
$KCODE = previous_kcode
|
28
|
-
end
|
29
|
-
else
|
30
|
-
yield
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
20
|
def test_does_nothing_without_payload
|
35
|
-
response =
|
21
|
+
response = conn.post('/echo')
|
36
22
|
assert_nil response.headers['Content-Type']
|
37
23
|
assert response.body.empty?
|
38
24
|
end
|
39
25
|
|
40
26
|
def test_ignores_custom_content_type
|
41
|
-
response =
|
27
|
+
response = conn.post('/echo', { :some => 'data' }, 'content-type' => 'application/x-foo')
|
42
28
|
assert_equal 'application/x-foo', response.headers['Content-Type']
|
43
29
|
assert_equal({ :some => 'data' }, response.body)
|
44
30
|
end
|
45
31
|
|
46
32
|
def test_url_encoded_no_header
|
47
|
-
response =
|
33
|
+
response = conn.post('/echo', { :fruit => %w[apples oranges] })
|
48
34
|
assert_equal 'application/x-www-form-urlencoded', response.headers['Content-Type']
|
49
35
|
assert_equal 'fruit%5B%5D=apples&fruit%5B%5D=oranges', response.body
|
50
36
|
end
|
51
37
|
|
52
38
|
def test_url_encoded_with_header
|
53
|
-
response =
|
39
|
+
response = conn.post('/echo', {'a'=>123}, 'content-type' => 'application/x-www-form-urlencoded')
|
54
40
|
assert_equal 'application/x-www-form-urlencoded', response.headers['Content-Type']
|
55
41
|
assert_equal 'a=123', response.body
|
56
42
|
end
|
57
43
|
|
58
44
|
def test_url_encoded_nested
|
59
|
-
response =
|
45
|
+
response = conn.post('/echo', { :user => {:name => 'Mislav', :web => 'mislav.net'} })
|
60
46
|
assert_equal 'application/x-www-form-urlencoded', response.headers['Content-Type']
|
61
47
|
expected = { 'user' => {'name' => 'Mislav', 'web' => 'mislav.net'} }
|
62
48
|
assert_equal expected, Faraday::Utils.parse_nested_query(response.body)
|
63
49
|
end
|
64
50
|
|
65
51
|
def test_url_encoded_non_nested
|
66
|
-
response =
|
52
|
+
response = conn.post('/echo', { :dimensions => ['date', 'location']}) do |req|
|
67
53
|
req.options.params_encoder = Faraday::FlatParamsEncoder
|
68
54
|
end
|
69
55
|
assert_equal 'application/x-www-form-urlencoded', response.headers['Content-Type']
|
@@ -74,24 +60,14 @@ class RequestMiddlewareTest < Faraday::TestCase
|
|
74
60
|
|
75
61
|
def test_url_encoded_unicode
|
76
62
|
err = capture_warnings {
|
77
|
-
response =
|
63
|
+
response = conn.post('/echo', {:str => "eé cç aã aâ"})
|
78
64
|
assert_equal "str=e%C3%A9+c%C3%A7+a%C3%A3+a%C3%A2", response.body
|
79
65
|
}
|
80
66
|
assert err.empty?, "stderr did include: #{err}"
|
81
67
|
end
|
82
68
|
|
83
|
-
def test_url_encoded_unicode_with_kcode_set
|
84
|
-
with_utf8 do
|
85
|
-
err = capture_warnings {
|
86
|
-
response = @conn.post('/echo', {:str => "eé cç aã aâ"})
|
87
|
-
assert_equal "str=e%C3%A9+c%C3%A7+a%C3%A3+a%C3%A2", response.body
|
88
|
-
}
|
89
|
-
assert err.empty?, "stderr did include: #{err}"
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
69
|
def test_url_encoded_nested_keys
|
94
|
-
response =
|
70
|
+
response = conn.post('/echo', {'a'=>{'b'=>{'c'=>['d']}}})
|
95
71
|
assert_equal "a%5Bb%5D%5Bc%5D%5B%5D=d", response.body
|
96
72
|
end
|
97
73
|
|
@@ -103,11 +79,12 @@ class RequestMiddlewareTest < Faraday::TestCase
|
|
103
79
|
/name=\"b\[d\]\"/]
|
104
80
|
|
105
81
|
payload = {:a => 1, :b => {:c => Faraday::UploadIO.new(__FILE__, 'text/x-ruby'), :d => 2}}
|
106
|
-
response =
|
82
|
+
response = conn.post('/echo', payload)
|
107
83
|
|
108
84
|
assert_kind_of Faraday::CompositeReadIO, response.body
|
109
|
-
|
110
|
-
|
85
|
+
assert response.headers['Content-Type'].start_with?(
|
86
|
+
"multipart/form-data; boundary=%s" % Faraday::Request::Multipart::DEFAULT_BOUNDARY_PREFIX,
|
87
|
+
)
|
111
88
|
|
112
89
|
response.body.send(:ios).map{|io| io.read}.each do |io|
|
113
90
|
if re = regexes.detect { |r| io =~ r }
|
@@ -125,11 +102,12 @@ class RequestMiddlewareTest < Faraday::TestCase
|
|
125
102
|
/name=\"b\[\]\[d\]\"/]
|
126
103
|
|
127
104
|
payload = {:a => 1, :b =>[{:c => Faraday::UploadIO.new(__FILE__, 'text/x-ruby'), :d => 2}]}
|
128
|
-
response =
|
105
|
+
response = conn.post('/echo', payload)
|
129
106
|
|
130
107
|
assert_kind_of Faraday::CompositeReadIO, response.body
|
131
|
-
|
132
|
-
|
108
|
+
assert response.headers['Content-Type'].start_with?(
|
109
|
+
"multipart/form-data; boundary=%s" % Faraday::Request::Multipart::DEFAULT_BOUNDARY_PREFIX,
|
110
|
+
)
|
133
111
|
|
134
112
|
response.body.send(:ios).map{|io| io.read}.each do |io|
|
135
113
|
if re = regexes.detect { |r| io =~ r }
|
@@ -139,4 +117,10 @@ class RequestMiddlewareTest < Faraday::TestCase
|
|
139
117
|
assert_equal [], regexes
|
140
118
|
end
|
141
119
|
|
120
|
+
def test_multipart_unique_boundary
|
121
|
+
payload = {:a => 1, :b =>[{:c => Faraday::UploadIO.new(__FILE__, 'text/x-ruby'), :d => 2}]}
|
122
|
+
response1 = conn.post('/echo', payload)
|
123
|
+
response2 = conn.post('/echo', payload)
|
124
|
+
assert response1.headers['Content-Type'] != response2.headers['Content-Type']
|
125
|
+
end
|
142
126
|
end
|
@@ -23,7 +23,7 @@ class ResponseMiddlewareTest < Faraday::TestCase
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_raises_not_found
|
26
|
-
error = assert_raises Faraday::
|
26
|
+
error = assert_raises Faraday::ResourceNotFound do
|
27
27
|
@conn.get('not-found')
|
28
28
|
end
|
29
29
|
assert_equal 'the server responded with status 404', error.message
|
@@ -31,7 +31,7 @@ class ResponseMiddlewareTest < Faraday::TestCase
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_raises_error
|
34
|
-
error = assert_raises Faraday::
|
34
|
+
error = assert_raises Faraday::ClientError do
|
35
35
|
@conn.get('error')
|
36
36
|
end
|
37
37
|
assert_equal 'the server responded with status 500', error.message
|
@@ -63,10 +63,10 @@ class ResponseNoBodyMiddleWareTest < Faraday::TestCase
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def test_204
|
66
|
-
|
66
|
+
assert_nil @conn.get('no_content').body
|
67
67
|
end
|
68
68
|
|
69
69
|
def test_304
|
70
|
-
|
70
|
+
assert_nil @conn.get('not_modified').body
|
71
71
|
end
|
72
72
|
end
|
data/test/utils_test.rb
CHANGED
@@ -1,6 +1,25 @@
|
|
1
1
|
require File.expand_path('../helper', __FILE__)
|
2
2
|
|
3
3
|
class TestUtils < Faraday::TestCase
|
4
|
+
|
5
|
+
# Headers parsing
|
6
|
+
|
7
|
+
def test_headers
|
8
|
+
"HTTP/1.x 500 OK\r\nContent-Type: text/html; charset=UTF-8\r\n" \
|
9
|
+
"HTTP/1.x 200 OK\r\nContent-Type: application/json; charset=UTF-8\r\n\r\n"
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_headers_parsing_for_aggregated_responses
|
13
|
+
headers = Faraday::Utils::Headers.new()
|
14
|
+
headers.parse(test_headers)
|
15
|
+
|
16
|
+
result = headers.to_hash
|
17
|
+
|
18
|
+
assert_equal result["Content-Type"], "application/json; charset=UTF-8"
|
19
|
+
end
|
20
|
+
|
21
|
+
# URI parsing
|
22
|
+
|
4
23
|
def setup
|
5
24
|
@url = "http://example.com/abc"
|
6
25
|
end
|
@@ -41,6 +60,15 @@ class TestUtils < Faraday::TestCase
|
|
41
60
|
end
|
42
61
|
end
|
43
62
|
|
63
|
+
def test_replace_header_hash
|
64
|
+
headers = Faraday::Utils::Headers.new('authorization' => 't0ps3cr3t!')
|
65
|
+
assert headers.include?('authorization')
|
66
|
+
|
67
|
+
headers.replace({'content-type' => 'text/plain'})
|
68
|
+
|
69
|
+
assert !headers.include?('authorization')
|
70
|
+
end
|
71
|
+
|
44
72
|
def normalize(url)
|
45
73
|
Faraday::Utils::URI(url)
|
46
74
|
end
|
@@ -54,5 +82,17 @@ class TestUtils < Faraday::TestCase
|
|
54
82
|
Faraday::Utils.default_uri_parser = old_parser
|
55
83
|
end
|
56
84
|
end
|
85
|
+
|
86
|
+
# YAML parsing
|
87
|
+
|
88
|
+
def test_headers_yaml_roundtrip
|
89
|
+
headers = Faraday::Utils::Headers.new('User-Agent' => 'safari', 'Content-type' => 'text/html')
|
90
|
+
result = YAML.load(headers.to_yaml)
|
91
|
+
|
92
|
+
assert result.include?('user-agent'), 'Unable to hydrate to a correct Headers'
|
93
|
+
assert result.include?('content-type'), 'Unable to hydrate to a correct Headers'
|
94
|
+
assert result['user-agent'] == 'safari', 'Unable to access rehydrated Headers'
|
95
|
+
assert result['content-type'] == 'text/html', 'Unable to access rehydrated Headers'
|
96
|
+
end
|
57
97
|
end
|
58
98
|
|
metadata
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: faraday
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- "@technoweenie"
|
8
|
+
- "@iMacTia"
|
9
|
+
- "@olleolleolle"
|
8
10
|
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
|
-
date:
|
13
|
+
date: 2019-11-27 00:00:00.000000000 Z
|
12
14
|
dependencies:
|
13
15
|
- !ruby/object:Gem::Dependency
|
14
16
|
name: multipart-post
|
@@ -30,34 +32,16 @@ dependencies:
|
|
30
32
|
- - "<"
|
31
33
|
- !ruby/object:Gem::Version
|
32
34
|
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
35
|
description:
|
48
36
|
email: technoweenie@gmail.com
|
49
37
|
executables: []
|
50
38
|
extensions: []
|
51
39
|
extra_rdoc_files: []
|
52
40
|
files:
|
53
|
-
- ".document"
|
54
41
|
- CHANGELOG.md
|
55
|
-
- CONTRIBUTING.md
|
56
|
-
- Gemfile
|
57
42
|
- LICENSE.md
|
58
43
|
- README.md
|
59
44
|
- Rakefile
|
60
|
-
- faraday.gemspec
|
61
45
|
- lib/faraday.rb
|
62
46
|
- lib/faraday/adapter.rb
|
63
47
|
- lib/faraday/adapter/em_http.rb
|
@@ -74,6 +58,7 @@ files:
|
|
74
58
|
- lib/faraday/adapter/typhoeus.rb
|
75
59
|
- lib/faraday/autoload.rb
|
76
60
|
- lib/faraday/connection.rb
|
61
|
+
- lib/faraday/deprecate.rb
|
77
62
|
- lib/faraday/error.rb
|
78
63
|
- lib/faraday/middleware.rb
|
79
64
|
- lib/faraday/options.rb
|
@@ -92,15 +77,10 @@ files:
|
|
92
77
|
- lib/faraday/response/raise_error.rb
|
93
78
|
- lib/faraday/upload_io.rb
|
94
79
|
- lib/faraday/utils.rb
|
95
|
-
-
|
96
|
-
-
|
97
|
-
-
|
98
|
-
-
|
99
|
-
- script/proxy-server
|
100
|
-
- script/release
|
101
|
-
- script/s3-put
|
102
|
-
- script/server
|
103
|
-
- script/test
|
80
|
+
- spec/faraday/deprecate_spec.rb
|
81
|
+
- spec/faraday/error_spec.rb
|
82
|
+
- spec/faraday/response/raise_error_spec.rb
|
83
|
+
- spec/spec_helper.rb
|
104
84
|
- test/adapters/default_test.rb
|
105
85
|
- test/adapters/em_http_test.rb
|
106
86
|
- test/adapters/em_synchrony_test.rb
|
@@ -130,10 +110,14 @@ files:
|
|
130
110
|
- test/response_middleware_test.rb
|
131
111
|
- test/strawberry.rb
|
132
112
|
- test/utils_test.rb
|
133
|
-
homepage: https://github.
|
113
|
+
homepage: https://lostisland.github.io/faraday
|
134
114
|
licenses:
|
135
115
|
- MIT
|
136
|
-
metadata:
|
116
|
+
metadata:
|
117
|
+
homepage_uri: https://lostisland.github.io/faraday
|
118
|
+
changelog_uri: https://github.com/lostisland/faraday/blob/master/CHANGELOG.md
|
119
|
+
source_code_uri: https://github.com/lostisland/faraday/
|
120
|
+
bug_tracker_uri: https://github.com/lostisland/faraday/issues
|
137
121
|
post_install_message:
|
138
122
|
rdoc_options: []
|
139
123
|
require_paths:
|
@@ -142,44 +126,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
142
126
|
requirements:
|
143
127
|
- - ">="
|
144
128
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
129
|
+
version: '1.9'
|
146
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
131
|
requirements:
|
148
132
|
- - ">="
|
149
133
|
- !ruby/object:Gem::Version
|
150
|
-
version:
|
134
|
+
version: '0'
|
151
135
|
requirements: []
|
152
|
-
|
153
|
-
rubygems_version: 2.2.2
|
136
|
+
rubygems_version: 3.0.3
|
154
137
|
signing_key:
|
155
|
-
specification_version:
|
138
|
+
specification_version: 4
|
156
139
|
summary: HTTP/REST API client library.
|
157
|
-
test_files:
|
158
|
-
- test/adapters/default_test.rb
|
159
|
-
- test/adapters/em_http_test.rb
|
160
|
-
- test/adapters/em_synchrony_test.rb
|
161
|
-
- test/adapters/excon_test.rb
|
162
|
-
- test/adapters/httpclient_test.rb
|
163
|
-
- test/adapters/integration.rb
|
164
|
-
- test/adapters/logger_test.rb
|
165
|
-
- test/adapters/net_http_persistent_test.rb
|
166
|
-
- test/adapters/net_http_test.rb
|
167
|
-
- test/adapters/patron_test.rb
|
168
|
-
- test/adapters/rack_test.rb
|
169
|
-
- test/adapters/test_middleware_test.rb
|
170
|
-
- test/adapters/typhoeus_test.rb
|
171
|
-
- test/authentication_middleware_test.rb
|
172
|
-
- test/composite_read_io_test.rb
|
173
|
-
- test/connection_test.rb
|
174
|
-
- test/env_test.rb
|
175
|
-
- test/helper.rb
|
176
|
-
- test/live_server.rb
|
177
|
-
- test/middleware/instrumentation_test.rb
|
178
|
-
- test/middleware/retry_test.rb
|
179
|
-
- test/middleware_stack_test.rb
|
180
|
-
- test/options_test.rb
|
181
|
-
- test/parameters_test.rb
|
182
|
-
- test/request_middleware_test.rb
|
183
|
-
- test/response_middleware_test.rb
|
184
|
-
- test/strawberry.rb
|
185
|
-
- test/utils_test.rb
|
140
|
+
test_files: []
|
data/.document
DELETED
data/CONTRIBUTING.md
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
## Contributing
|
2
|
-
|
3
|
-
You can run the test suite against a live server by running `script/test`. It
|
4
|
-
automatically starts a test server in background. Only tests in
|
5
|
-
`test/adapters/*_test.rb` require a server, though.
|
6
|
-
|
7
|
-
``` sh
|
8
|
-
# run the whole suite
|
9
|
-
$ script/test
|
10
|
-
|
11
|
-
# run only specific files
|
12
|
-
$ script/test excon typhoeus
|
13
|
-
|
14
|
-
# run tests using SSL
|
15
|
-
$ SSL=yes script/test
|
16
|
-
```
|
17
|
-
|
18
|
-
We will accept middleware that:
|
19
|
-
|
20
|
-
1. is useful to a broader audience, but can be implemented relatively
|
21
|
-
simple; and
|
22
|
-
2. which isn't already present in [faraday_middleware][] project.
|
23
|
-
|
24
|
-
We will accept adapters that:
|
25
|
-
|
26
|
-
1. support SSL & streaming;
|
27
|
-
1. are proven and may have better performance than existing ones; or
|
28
|
-
2. if they have features not present in included adapters.
|
29
|
-
|
30
|
-
We are pushing towards a 1.0 release, when we will have to follow [Semantic
|
31
|
-
Versioning][semver]. If your patch includes changes to break compatibility,
|
32
|
-
note that so we can add it to the [Changelog][].
|
33
|
-
|
34
|
-
[semver]: http://semver.org/
|
35
|
-
[changelog]: https://github.com/lostisland/faraday/wiki/Changelog
|
36
|
-
[faraday_middleware]: https://github.com/lostisland/faraday_middleware/wiki
|
data/Gemfile
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
gem 'ffi-ncurses', '~> 0.3', :platforms => :jruby
|
4
|
-
gem 'jruby-openssl', '~> 0.8.8', :platforms => :jruby
|
5
|
-
gem 'rake'
|
6
|
-
|
7
|
-
group :test do
|
8
|
-
gem 'coveralls', :require => false
|
9
|
-
gem 'em-http-request', '>= 1.1', :require => 'em-http'
|
10
|
-
gem 'em-synchrony', '>= 1.0.3', :require => ['em-synchrony', 'em-synchrony/em-http']
|
11
|
-
gem 'excon', '>= 0.27.4'
|
12
|
-
gem 'httpclient', '>= 2.2'
|
13
|
-
gem 'leftright', '>= 0.9', :require => false
|
14
|
-
gem 'mime-types', '~> 1.25', :platforms => [:jruby, :ruby_18]
|
15
|
-
gem 'minitest', '>= 5.0.5'
|
16
|
-
gem 'net-http-persistent', '>= 2.9.4'
|
17
|
-
gem 'patron', '>= 0.4.2', :platforms => :ruby
|
18
|
-
gem 'rack-test', '>= 0.6', :require => 'rack/test'
|
19
|
-
gem 'rest-client', '~> 1.6.0', :platforms => [:jruby, :ruby_18]
|
20
|
-
gem 'simplecov'
|
21
|
-
gem 'sinatra', '~> 1.3'
|
22
|
-
gem 'typhoeus', '~> 0.3.3', :platforms => :ruby
|
23
|
-
end
|
24
|
-
|
25
|
-
gemspec
|
data/faraday.gemspec
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
lib = "faraday"
|
2
|
-
lib_file = File.expand_path("../lib/#{lib}.rb", __FILE__)
|
3
|
-
File.read(lib_file) =~ /\bVERSION\s*=\s*["'](.+?)["']/
|
4
|
-
version = $1
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.specification_version = 2 if spec.respond_to? :specification_version=
|
8
|
-
spec.required_rubygems_version = '>= 1.3.5'
|
9
|
-
|
10
|
-
spec.name = lib
|
11
|
-
spec.version = version
|
12
|
-
|
13
|
-
spec.summary = "HTTP/REST API client library."
|
14
|
-
|
15
|
-
spec.authors = ["Rick Olson"]
|
16
|
-
spec.email = 'technoweenie@gmail.com'
|
17
|
-
spec.homepage = 'https://github.com/lostisland/faraday'
|
18
|
-
spec.licenses = ['MIT']
|
19
|
-
|
20
|
-
spec.add_dependency 'multipart-post', '>= 1.2', '< 3'
|
21
|
-
spec.add_development_dependency 'bundler', '~> 1.0'
|
22
|
-
|
23
|
-
spec.files = %w(.document CHANGELOG.md CONTRIBUTING.md Gemfile LICENSE.md README.md Rakefile)
|
24
|
-
spec.files << "#{lib}.gemspec"
|
25
|
-
spec.files += Dir.glob("lib/**/*.rb")
|
26
|
-
spec.files += Dir.glob("test/**/*.{rb,txt}")
|
27
|
-
spec.files += Dir.glob("script/*")
|
28
|
-
|
29
|
-
dev_null = File.exist?('/dev/null') ? '/dev/null' : 'NUL'
|
30
|
-
git_files = `git ls-files -z 2>#{dev_null}`
|
31
|
-
spec.files &= git_files.split("\0") if $?.success?
|
32
|
-
|
33
|
-
spec.test_files = Dir.glob("test/**/*.rb")
|
34
|
-
end
|
data/script/cached-bundle
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
# Usage: cached-bundle install --deployment
|
3
|
-
#
|
4
|
-
# After running `bundle`, caches the `./bundle` directory to S3.
|
5
|
-
# On the next run, restores the cached directory before running `bundle`.
|
6
|
-
# When `Gemfile` changes, the cache gets rebuilt.
|
7
|
-
#
|
8
|
-
# Requirements:
|
9
|
-
# - Gemfile
|
10
|
-
# - TRAVIS_REPO_SLUG
|
11
|
-
# - TRAVIS_RUBY_VERSION
|
12
|
-
# - AMAZON_S3_BUCKET
|
13
|
-
# - script/s3-put
|
14
|
-
# - bundle
|
15
|
-
# - curl
|
16
|
-
#
|
17
|
-
# Author: Mislav Marohnić
|
18
|
-
|
19
|
-
set -e
|
20
|
-
|
21
|
-
compute_md5() {
|
22
|
-
local output="$(openssl md5)"
|
23
|
-
echo "${output##* }"
|
24
|
-
}
|
25
|
-
|
26
|
-
download() {
|
27
|
-
curl --tcp-nodelay -qsfL "$1" -o "$2"
|
28
|
-
}
|
29
|
-
|
30
|
-
bundle_path="bundle"
|
31
|
-
gemfile_hash="$(compute_md5 <"${BUNDLE_GEMFILE:-Gemfile}")"
|
32
|
-
cache_name="${TRAVIS_RUBY_VERSION}-${gemfile_hash}.tgz"
|
33
|
-
fetch_url="http://${AMAZON_S3_BUCKET}.s3.amazonaws.com/${TRAVIS_REPO_SLUG}/${cache_name}"
|
34
|
-
|
35
|
-
if download "$fetch_url" "$cache_name"; then
|
36
|
-
echo "Reusing cached bundle ${cache_name}"
|
37
|
-
tar xzf "$cache_name"
|
38
|
-
fi
|
39
|
-
|
40
|
-
bundle "$@"
|
41
|
-
|
42
|
-
if [ ! -f "$cache_name" ] && [ -n "$AMAZON_SECRET_ACCESS_KEY" ]; then
|
43
|
-
echo "Caching \`${bundle_path}' to S3"
|
44
|
-
tar czf "$cache_name" "$bundle_path"
|
45
|
-
script/s3-put "$cache_name" "${AMAZON_S3_BUCKET}:${TRAVIS_REPO_SLUG}/${cache_name}"
|
46
|
-
fi
|