faraday 0.8.11 → 0.9.0.rc1

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 (70) hide show
  1. data/.document +6 -0
  2. data/CONTRIBUTING.md +36 -0
  3. data/Gemfile +7 -6
  4. data/LICENSE.md +1 -1
  5. data/README.md +38 -51
  6. data/Rakefile +2 -18
  7. data/faraday.gemspec +34 -0
  8. data/lib/faraday.rb +181 -67
  9. data/lib/faraday/adapter.rb +19 -34
  10. data/lib/faraday/adapter/em_http.rb +24 -10
  11. data/lib/faraday/adapter/em_synchrony.rb +1 -15
  12. data/lib/faraday/adapter/excon.rb +6 -12
  13. data/lib/faraday/adapter/httpclient.rb +92 -0
  14. data/lib/faraday/adapter/net_http.rb +2 -3
  15. data/lib/faraday/adapter/net_http_persistent.rb +3 -15
  16. data/lib/faraday/adapter/patron.rb +13 -21
  17. data/lib/faraday/adapter/rack.rb +0 -2
  18. data/lib/faraday/adapter/test.rb +35 -36
  19. data/lib/faraday/adapter/typhoeus.rb +10 -12
  20. data/lib/faraday/autoload.rb +87 -0
  21. data/lib/faraday/connection.rb +196 -99
  22. data/lib/faraday/error.rb +33 -33
  23. data/lib/faraday/options.rb +215 -0
  24. data/lib/faraday/parameters.rb +193 -0
  25. data/lib/faraday/{builder.rb → rack_builder.rb} +78 -21
  26. data/lib/faraday/request.rb +12 -25
  27. data/lib/faraday/request/authorization.rb +3 -3
  28. data/lib/faraday/request/basic_authentication.rb +1 -1
  29. data/lib/faraday/request/instrumentation.rb +38 -0
  30. data/lib/faraday/request/multipart.rb +10 -9
  31. data/lib/faraday/request/retry.rb +70 -6
  32. data/lib/faraday/request/token_authentication.rb +2 -2
  33. data/lib/faraday/request/url_encoded.rb +7 -6
  34. data/lib/faraday/response.rb +17 -22
  35. data/lib/faraday/response/logger.rb +4 -4
  36. data/lib/faraday/response/raise_error.rb +4 -5
  37. data/lib/faraday/utils.rb +54 -67
  38. data/script/console +7 -0
  39. data/script/release +6 -3
  40. data/script/server +3 -1
  41. data/script/test +7 -33
  42. data/test/adapters/em_http_test.rb +6 -1
  43. data/test/adapters/em_synchrony_test.rb +7 -1
  44. data/test/adapters/excon_test.rb +0 -7
  45. data/test/adapters/httpclient_test.rb +16 -0
  46. data/test/adapters/integration.rb +8 -39
  47. data/test/adapters/logger_test.rb +1 -1
  48. data/test/adapters/net_http_test.rb +0 -31
  49. data/test/adapters/patron_test.rb +1 -1
  50. data/test/adapters/rack_test.rb +0 -5
  51. data/test/adapters/test_middleware_test.rb +19 -4
  52. data/test/adapters/typhoeus_test.rb +20 -3
  53. data/test/authentication_middleware_test.rb +7 -7
  54. data/test/connection_test.rb +52 -75
  55. data/test/env_test.rb +33 -24
  56. data/test/helper.rb +15 -13
  57. data/test/live_server.rb +10 -4
  58. data/test/middleware/instrumentation_test.rb +75 -0
  59. data/test/middleware/retry_test.rb +44 -38
  60. data/test/middleware_stack_test.rb +12 -11
  61. data/test/options_test.rb +126 -0
  62. data/test/request_middleware_test.rb +17 -7
  63. data/test/response_middleware_test.rb +2 -4
  64. data/test/strawberry.rb +2 -0
  65. metadata +82 -28
  66. checksums.yaml +0 -7
  67. data/script/proxy-server +0 -41
  68. data/test/multibyte.txt +0 -1
  69. data/test/parameters_test.rb +0 -24
  70. data/test/utils_test.rb +0 -30
@@ -0,0 +1,126 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class OptionsTest < Faraday::TestCase
4
+ class SubOptions < Faraday::Options.new(:sub); end
5
+ class Options < Faraday::Options.new(:a, :b, :c)
6
+ options :c => SubOptions
7
+ end
8
+
9
+ def test_request_proxy_setter
10
+ options = Faraday::RequestOptions.new
11
+ assert_nil options.proxy
12
+
13
+ assert_raises NoMethodError do
14
+ options[:proxy] = {:booya => 1}
15
+ end
16
+
17
+ options[:proxy] = {:user => 'user'}
18
+ assert_kind_of Faraday::ProxyOptions, options.proxy
19
+ assert_equal 'user', options.proxy.user
20
+
21
+ options.proxy = nil
22
+ assert_nil options.proxy
23
+ end
24
+
25
+ def test_proxy_options_from_string
26
+ options = Faraday::ProxyOptions.from 'http://user:pass@example.org'
27
+ assert_equal 'user', options.user
28
+ assert_equal 'pass', options.password
29
+ assert_kind_of URI, options.uri
30
+ assert_equal '', options.path
31
+ assert_equal 80, options.port
32
+ assert_equal 'example.org', options.host
33
+ assert_equal 'http', options.scheme
34
+ end
35
+
36
+ def test_from_options
37
+ options = Options.new 1
38
+
39
+ value = Options.from(options)
40
+ assert_equal 1, value.a
41
+ assert_nil value.b
42
+ end
43
+
44
+ def test_from_options_with_sub_object
45
+ sub = SubOptions.new 1
46
+ options = Options.from :a => 1, :c => sub
47
+ assert_kind_of Options, options
48
+ assert_equal 1, options.a
49
+ assert_nil options.b
50
+ assert_kind_of SubOptions, options.c
51
+ assert_equal 1, options.c.sub
52
+ end
53
+
54
+ def test_from_hash
55
+ options = Options.from :a => 1
56
+ assert_kind_of Options, options
57
+ assert_equal 1, options.a
58
+ assert_nil options.b
59
+ end
60
+
61
+ def test_from_hash_with_sub_object
62
+ options = Options.from :a => 1, :c => {:sub => 1}
63
+ assert_kind_of Options, options
64
+ assert_equal 1, options.a
65
+ assert_nil options.b
66
+ assert_kind_of SubOptions, options.c
67
+ assert_equal 1, options.c.sub
68
+ end
69
+
70
+ def test_from_deep_hash
71
+ hash = {:b => 1}
72
+ options = Options.from :a => hash
73
+ assert_equal 1, options.a[:b]
74
+
75
+ hash[:b] = 2
76
+ assert_equal 1, options.a[:b]
77
+
78
+ options.a[:b] = 3
79
+ assert_equal 2, hash[:b]
80
+ assert_equal 3, options.a[:b]
81
+ end
82
+
83
+ def test_from_nil
84
+ options = Options.from(nil)
85
+ assert_kind_of Options, options
86
+ assert_nil options.a
87
+ assert_nil options.b
88
+ end
89
+
90
+ def test_invalid_key
91
+ assert_raises NoMethodError do
92
+ Options.from :invalid => 1
93
+ end
94
+ end
95
+
96
+ def test_update
97
+ options = Options.new 1
98
+ assert_equal 1, options.a
99
+ assert_nil options.b
100
+
101
+ updated = options.update :a => 2, :b => 3
102
+ assert_equal 2, options.a
103
+ assert_equal 3, options.b
104
+ assert_equal options, updated
105
+ end
106
+
107
+ def test_delete
108
+ options = Options.new 1
109
+ assert_equal 1, options.a
110
+ assert_equal 1, options.delete(:a)
111
+ assert_nil options.a
112
+ end
113
+
114
+ def test_merge
115
+ options = Options.new 1
116
+ assert_equal 1, options.a
117
+ assert_nil options.b
118
+
119
+ dup = options.merge :a => 2, :b => 3
120
+ assert_equal 2, dup.a
121
+ assert_equal 3, dup.b
122
+ assert_equal 1, options.a
123
+ assert_nil options.b
124
+ end
125
+ end
126
+
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
+ require File.expand_path('../helper', __FILE__)
3
3
 
4
4
  Faraday::CompositeReadIO.class_eval { attr_reader :ios }
5
5
 
@@ -62,12 +62,22 @@ class RequestMiddlewareTest < Faraday::TestCase
62
62
  assert_equal expected, Faraday::Utils.parse_nested_query(response.body)
63
63
  end
64
64
 
65
+ def test_url_encoded_non_nested
66
+ response = @conn.post('/echo', { :dimensions => ['date', 'location']}) do |req|
67
+ req.options.params_encoder = Faraday::FlatParamsEncoder
68
+ end
69
+ assert_equal 'application/x-www-form-urlencoded', response.headers['Content-Type']
70
+ expected = { 'dimensions' => ['date', 'location'] }
71
+ assert_equal expected, Faraday::Utils.parse_query(response.body)
72
+ assert_equal 'dimensions=date&dimensions=location', response.body
73
+ end
74
+
65
75
  def test_url_encoded_unicode
66
76
  err = capture_warnings {
67
77
  response = @conn.post('/echo', {:str => "eé cç aã aâ"})
68
78
  assert_equal "str=e%C3%A9+c%C3%A7+a%C3%A3+a%C3%A2", response.body
69
79
  }
70
- assert err.empty?, "stderr did include: #{err}"
80
+ assert err.empty?
71
81
  end
72
82
 
73
83
  def test_url_encoded_unicode_with_kcode_set
@@ -76,7 +86,7 @@ class RequestMiddlewareTest < Faraday::TestCase
76
86
  response = @conn.post('/echo', {:str => "eé cç aã aâ"})
77
87
  assert_equal "str=e%C3%A9+c%C3%A7+a%C3%A3+a%C3%A2", response.body
78
88
  }
79
- assert err.empty?, "stderr did include: #{err}"
89
+ assert err.empty?
80
90
  end
81
91
  end
82
92
 
@@ -96,7 +106,7 @@ class RequestMiddlewareTest < Faraday::TestCase
96
106
  response = @conn.post('/echo', payload)
97
107
 
98
108
  assert_kind_of Faraday::CompositeReadIO, response.body
99
- assert_equal "multipart/form-data; boundary=%s" % Faraday::Request::Multipart::DEFAULT_BOUNDARY,
109
+ assert_equal "multipart/form-data;boundary=%s" % Faraday::Request::Multipart::DEFAULT_BOUNDARY,
100
110
  response.headers['Content-Type']
101
111
 
102
112
  response.body.send(:ios).map{|io| io.read}.each do |io|
@@ -106,7 +116,7 @@ class RequestMiddlewareTest < Faraday::TestCase
106
116
  end
107
117
  assert_equal [], regexes
108
118
  end
109
-
119
+
110
120
  def test_multipart_with_arrays
111
121
  # assume params are out of order
112
122
  regexes = [
@@ -118,7 +128,7 @@ class RequestMiddlewareTest < Faraday::TestCase
118
128
  response = @conn.post('/echo', payload)
119
129
 
120
130
  assert_kind_of Faraday::CompositeReadIO, response.body
121
- assert_equal "multipart/form-data; boundary=%s" % Faraday::Request::Multipart::DEFAULT_BOUNDARY,
131
+ assert_equal "multipart/form-data;boundary=%s" % Faraday::Request::Multipart::DEFAULT_BOUNDARY,
122
132
  response.headers['Content-Type']
123
133
 
124
134
  response.body.send(:ios).map{|io| io.read}.each do |io|
@@ -128,5 +138,5 @@ class RequestMiddlewareTest < Faraday::TestCase
128
138
  end
129
139
  assert_equal [], regexes
130
140
  end
131
-
141
+
132
142
  end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
1
+ require File.expand_path('../helper', __FILE__)
2
2
 
3
3
  class ResponseMiddlewareTest < Faraday::TestCase
4
4
  def setup
@@ -19,9 +19,7 @@ class ResponseMiddlewareTest < Faraday::TestCase
19
19
  end
20
20
 
21
21
  def test_success
22
- assert_nothing_raised do
23
- @conn.get('ok')
24
- end
22
+ assert @conn.get('ok')
25
23
  end
26
24
 
27
25
  def test_raises_not_found
@@ -0,0 +1,2 @@
1
+ class MiddlewareStackTest::Strawberry < MiddlewareStackTest::Handler
2
+ end
metadata CHANGED
@@ -1,77 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.11
4
+ version: 0.9.0.rc1
5
+ prerelease: 6
5
6
  platform: ruby
6
7
  authors:
7
8
  - Rick Olson
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-10-07 00:00:00.000000000 Z
12
+ date: 2013-05-08 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: multipart-post
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - "~>"
19
+ - - ~>
18
20
  - !ruby/object:Gem::Version
19
- version: 1.2.0
21
+ version: '1.1'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - "~>"
27
+ - - ~>
25
28
  - !ruby/object:Gem::Version
26
- version: 1.2.0
29
+ version: '1.1'
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.0'
27
46
  description:
28
47
  email: technoweenie@gmail.com
29
48
  executables: []
30
49
  extensions: []
31
50
  extra_rdoc_files: []
32
51
  files:
52
+ - .document
53
+ - CONTRIBUTING.md
33
54
  - Gemfile
34
55
  - LICENSE.md
35
56
  - README.md
36
57
  - Rakefile
37
- - lib/faraday.rb
38
- - lib/faraday/adapter.rb
58
+ - faraday.gemspec
39
59
  - lib/faraday/adapter/em_http.rb
40
- - lib/faraday/adapter/em_synchrony.rb
41
60
  - lib/faraday/adapter/em_synchrony/parallel_manager.rb
61
+ - lib/faraday/adapter/em_synchrony.rb
42
62
  - lib/faraday/adapter/excon.rb
63
+ - lib/faraday/adapter/httpclient.rb
43
64
  - lib/faraday/adapter/net_http.rb
44
65
  - lib/faraday/adapter/net_http_persistent.rb
45
66
  - lib/faraday/adapter/patron.rb
46
67
  - lib/faraday/adapter/rack.rb
47
68
  - lib/faraday/adapter/test.rb
48
69
  - lib/faraday/adapter/typhoeus.rb
49
- - lib/faraday/builder.rb
70
+ - lib/faraday/adapter.rb
71
+ - lib/faraday/autoload.rb
50
72
  - lib/faraday/connection.rb
51
73
  - lib/faraday/error.rb
52
74
  - lib/faraday/middleware.rb
53
- - lib/faraday/request.rb
75
+ - lib/faraday/options.rb
76
+ - lib/faraday/parameters.rb
77
+ - lib/faraday/rack_builder.rb
54
78
  - lib/faraday/request/authorization.rb
55
79
  - lib/faraday/request/basic_authentication.rb
80
+ - lib/faraday/request/instrumentation.rb
56
81
  - lib/faraday/request/multipart.rb
57
82
  - lib/faraday/request/retry.rb
58
83
  - lib/faraday/request/token_authentication.rb
59
84
  - lib/faraday/request/url_encoded.rb
60
- - lib/faraday/response.rb
85
+ - lib/faraday/request.rb
61
86
  - lib/faraday/response/logger.rb
62
87
  - lib/faraday/response/raise_error.rb
88
+ - lib/faraday/response.rb
63
89
  - lib/faraday/upload_io.rb
64
90
  - lib/faraday/utils.rb
65
- - script/generate_certs
66
- - script/package
67
- - script/proxy-server
68
- - script/release
69
- - script/server
70
- - script/test
91
+ - lib/faraday.rb
71
92
  - test/adapters/default_test.rb
72
93
  - test/adapters/em_http_test.rb
73
94
  - test/adapters/em_synchrony_test.rb
74
95
  - test/adapters/excon_test.rb
96
+ - test/adapters/httpclient_test.rb
75
97
  - test/adapters/integration.rb
76
98
  - test/adapters/logger_test.rb
77
99
  - test/adapters/net_http_persistent_test.rb
@@ -86,36 +108,68 @@ files:
86
108
  - test/env_test.rb
87
109
  - test/helper.rb
88
110
  - test/live_server.rb
111
+ - test/middleware/instrumentation_test.rb
89
112
  - test/middleware/retry_test.rb
90
113
  - test/middleware_stack_test.rb
91
- - test/multibyte.txt
92
- - test/parameters_test.rb
114
+ - test/options_test.rb
93
115
  - test/request_middleware_test.rb
94
116
  - test/response_middleware_test.rb
95
- - test/utils_test.rb
117
+ - test/strawberry.rb
118
+ - script/console
119
+ - script/generate_certs
120
+ - script/package
121
+ - script/release
122
+ - script/server
123
+ - script/test
96
124
  homepage: https://github.com/lostisland/faraday
97
125
  licenses:
98
126
  - MIT
99
- metadata: {}
100
127
  post_install_message:
101
128
  rdoc_options: []
102
129
  require_paths:
103
130
  - lib
104
131
  required_ruby_version: !ruby/object:Gem::Requirement
132
+ none: false
105
133
  requirements:
106
- - - ">="
134
+ - - ! '>='
107
135
  - !ruby/object:Gem::Version
108
136
  version: '0'
109
137
  required_rubygems_version: !ruby/object:Gem::Requirement
138
+ none: false
110
139
  requirements:
111
- - - ">="
140
+ - - ! '>'
112
141
  - !ruby/object:Gem::Version
113
- version: 1.3.6
142
+ version: 1.3.1
114
143
  requirements: []
115
144
  rubyforge_project:
116
- rubygems_version: 2.2.3
145
+ rubygems_version: 1.8.23
117
146
  signing_key:
118
147
  specification_version: 2
119
148
  summary: HTTP/REST API client library.
120
- test_files: []
121
- has_rdoc:
149
+ test_files:
150
+ - test/adapters/default_test.rb
151
+ - test/adapters/em_http_test.rb
152
+ - test/adapters/em_synchrony_test.rb
153
+ - test/adapters/excon_test.rb
154
+ - test/adapters/httpclient_test.rb
155
+ - test/adapters/integration.rb
156
+ - test/adapters/logger_test.rb
157
+ - test/adapters/net_http_persistent_test.rb
158
+ - test/adapters/net_http_test.rb
159
+ - test/adapters/patron_test.rb
160
+ - test/adapters/rack_test.rb
161
+ - test/adapters/test_middleware_test.rb
162
+ - test/adapters/typhoeus_test.rb
163
+ - test/authentication_middleware_test.rb
164
+ - test/composite_read_io_test.rb
165
+ - test/connection_test.rb
166
+ - test/env_test.rb
167
+ - test/helper.rb
168
+ - test/live_server.rb
169
+ - test/middleware/instrumentation_test.rb
170
+ - test/middleware/retry_test.rb
171
+ - test/middleware_stack_test.rb
172
+ - test/options_test.rb
173
+ - test/request_middleware_test.rb
174
+ - test/response_middleware_test.rb
175
+ - test/strawberry.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 431792ff21fb498eb658855f87503d2081869616
4
- data.tar.gz: c6b3a7f9c1a9f7a4a60eff2236b882dbd812eab4
5
- SHA512:
6
- metadata.gz: 8855727969169984a104ba02c2ed27b4a86fb7d3a698fe6f5932c4858cb5e4f5eba9251d3742cb8d999b654f89ff2d073228738998f3199ae104e9e9883bd031
7
- data.tar.gz: eda459cc1abe00450f0d48dab3b069544dd414001faf9be231e2215fa81efced7496a99a2baa6502f1d7bbe162f6b41f415cdef1cd9ce935a9de8752749997a3
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Usage: script/proxy-server [-p PORT] [-u USER:PASSWORD]
3
- require 'webrick'
4
- require 'webrick/httpproxy'
5
-
6
- port = 4001
7
-
8
- if found = ARGV.index('-p')
9
- port = ARGV[found + 1].to_i
10
- end
11
- if found = ARGV.index('-u')
12
- username, password = ARGV[found + 1].split(':', 2)
13
- end
14
-
15
- match_credentials = lambda { |credentials|
16
- got_username, got_password = credentials.to_s.unpack("m*")[0].split(":", 2)
17
- got_username == username && got_password == password
18
- }
19
-
20
- log_io = $stdout
21
- log_io.sync = true
22
-
23
- webrick_opts = {
24
- :Port => port, :Logger => WEBrick::Log::new(log_io),
25
- :AccessLog => [[log_io, "[%{X-Faraday-Adapter}i] %m %U -> %s %b"]],
26
- :ProxyAuthProc => lambda { |req, res|
27
- if username
28
- type, credentials = req.header['proxy-authorization'].first.to_s.split(/\s+/, 2)
29
- unless "Basic" == type && match_credentials.call(credentials)
30
- raise WEBrick::HTTPStatus::ProxyAuthenticationRequired
31
- end
32
- end
33
- }
34
- }
35
-
36
- proxy = WEBrick::HTTPProxyServer.new(webrick_opts)
37
-
38
- trap(:TERM) { proxy.shutdown }
39
- trap(:INT) { proxy.shutdown }
40
-
41
- proxy.start