faraday 1.7.0 → 2.0.0.alpha.pre.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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +111 -1
  3. data/README.md +16 -9
  4. data/examples/client_spec.rb +13 -0
  5. data/examples/client_test.rb +42 -3
  6. data/lib/faraday/adapter/test.rb +32 -43
  7. data/lib/faraday/adapter.rb +0 -5
  8. data/lib/faraday/connection.rb +8 -69
  9. data/lib/faraday/encoders/nested_params_encoder.rb +2 -2
  10. data/lib/faraday/error.rb +1 -0
  11. data/lib/faraday/file_part.rb +0 -6
  12. data/lib/faraday/logging/formatter.rb +1 -0
  13. data/lib/faraday/middleware.rb +0 -1
  14. data/lib/faraday/middleware_registry.rb +15 -79
  15. data/lib/faraday/options.rb +3 -3
  16. data/lib/faraday/rack_builder.rb +1 -1
  17. data/lib/faraday/request/authorization.rb +31 -38
  18. data/lib/faraday/request/instrumentation.rb +2 -0
  19. data/lib/faraday/request/json.rb +55 -0
  20. data/lib/faraday/request/multipart.rb +2 -0
  21. data/lib/faraday/request/retry.rb +3 -1
  22. data/lib/faraday/request/url_encoded.rb +2 -0
  23. data/lib/faraday/request.rb +13 -31
  24. data/lib/faraday/response/json.rb +54 -0
  25. data/lib/faraday/response/logger.rb +4 -4
  26. data/lib/faraday/response/raise_error.rb +9 -1
  27. data/lib/faraday/response.rb +8 -19
  28. data/lib/faraday/utils/headers.rb +1 -1
  29. data/lib/faraday/utils.rb +9 -4
  30. data/lib/faraday/version.rb +1 -1
  31. data/lib/faraday.rb +6 -37
  32. data/spec/faraday/adapter/test_spec.rb +32 -0
  33. data/spec/faraday/connection_spec.rb +78 -51
  34. data/spec/faraday/options/env_spec.rb +2 -2
  35. data/spec/faraday/rack_builder_spec.rb +5 -43
  36. data/spec/faraday/request/authorization_spec.rb +15 -29
  37. data/spec/faraday/request/instrumentation_spec.rb +5 -7
  38. data/spec/faraday/request/json_spec.rb +111 -0
  39. data/spec/faraday/request/multipart_spec.rb +5 -5
  40. data/spec/faraday/request/retry_spec.rb +13 -1
  41. data/spec/faraday/request_spec.rb +0 -11
  42. data/spec/faraday/response/json_spec.rb +117 -0
  43. data/spec/faraday/response/raise_error_spec.rb +7 -4
  44. data/spec/faraday/utils_spec.rb +1 -1
  45. data/spec/support/fake_safe_buffer.rb +1 -1
  46. data/spec/support/shared_examples/request_method.rb +5 -5
  47. metadata +11 -134
  48. data/lib/faraday/adapter/typhoeus.rb +0 -15
  49. data/lib/faraday/autoload.rb +0 -87
  50. data/lib/faraday/dependency_loader.rb +0 -37
  51. data/lib/faraday/request/basic_authentication.rb +0 -20
  52. data/lib/faraday/request/token_authentication.rb +0 -20
  53. data/spec/faraday/adapter/em_http_spec.rb +0 -49
  54. data/spec/faraday/adapter/em_synchrony_spec.rb +0 -18
  55. data/spec/faraday/adapter/excon_spec.rb +0 -49
  56. data/spec/faraday/adapter/httpclient_spec.rb +0 -73
  57. data/spec/faraday/adapter/net_http_spec.rb +0 -64
  58. data/spec/faraday/adapter/patron_spec.rb +0 -18
  59. data/spec/faraday/adapter/rack_spec.rb +0 -8
  60. data/spec/faraday/adapter/typhoeus_spec.rb +0 -7
  61. data/spec/faraday/response/middleware_spec.rb +0 -68
  62. data/spec/support/webmock_rack_app.rb +0 -68
@@ -6,59 +6,26 @@ module Faraday
6
6
  # Adds the ability for other modules to register and lookup
7
7
  # middleware classes.
8
8
  module MiddlewareRegistry
9
+ def registered_middleware
10
+ @registered_middleware ||= {}
11
+ end
12
+
9
13
  # Register middleware class(es) on the current module.
10
14
  #
11
- # @param autoload_path [String] Middleware autoload path
12
- # @param mapping [Hash{
13
- # Symbol => Module,
14
- # Symbol => Array<Module, Symbol, String>,
15
- # }] Middleware mapping from a lookup symbol to a reference to the
16
- # middleware.
17
- # Classes can be expressed as:
18
- # - a fully qualified constant
19
- # - a Symbol
20
- # - a Proc that will be lazily called to return the former
21
- # - an array is given, its first element is the constant or symbol,
22
- # and its second is a file to `require`.
15
+ # @param mappings [Hash] Middleware mappings from a lookup symbol to a middleware class.
23
16
  # @return [void]
24
17
  #
25
18
  # @example Lookup by a constant
26
19
  #
27
20
  # module Faraday
28
- # class Whatever
21
+ # class Whatever < Middleware
29
22
  # # Middleware looked up by :foo returns Faraday::Whatever::Foo.
30
- # register_middleware foo: Foo
31
- # end
32
- # end
33
- #
34
- # @example Lookup by a symbol
35
- #
36
- # module Faraday
37
- # class Whatever
38
- # # Middleware looked up by :bar returns
39
- # # Faraday::Whatever.const_get(:Bar)
40
- # register_middleware bar: :Bar
41
- # end
42
- # end
43
- #
44
- # @example Lookup by a symbol and string in an array
45
- #
46
- # module Faraday
47
- # class Whatever
48
- # # Middleware looked up by :baz requires 'baz' and returns
49
- # # Faraday::Whatever.const_get(:Baz)
50
- # register_middleware baz: [:Baz, 'baz']
23
+ # register_middleware(foo: Whatever)
51
24
  # end
52
25
  # end
53
- #
54
- def register_middleware(autoload_path = nil, mapping = nil)
55
- if mapping.nil?
56
- mapping = autoload_path
57
- autoload_path = nil
58
- end
26
+ def register_middleware(**mappings)
59
27
  middleware_mutex do
60
- @middleware_autoload_path = autoload_path if autoload_path
61
- (@registered_middleware ||= {}).update(mapping)
28
+ registered_middleware.update(mappings)
62
29
  end
63
30
  end
64
31
 
@@ -66,7 +33,7 @@ module Faraday
66
33
  #
67
34
  # @param key [Symbol] key for the registered middleware.
68
35
  def unregister_middleware(key)
69
- @registered_middleware.delete(key)
36
+ registered_middleware.delete(key)
70
37
  end
71
38
 
72
39
  # Lookup middleware class with a registered Symbol shortcut.
@@ -78,16 +45,15 @@ module Faraday
78
45
  # @example
79
46
  #
80
47
  # module Faraday
81
- # class Whatever
82
- # register_middleware foo: Foo
48
+ # class Whatever < Middleware
49
+ # register_middleware(foo: Whatever)
83
50
  # end
84
51
  # end
85
52
  #
86
- # Faraday::Whatever.lookup_middleware(:foo)
87
- # # => Faraday::Whatever::Foo
88
- #
53
+ # Faraday::Middleware.lookup_middleware(:foo)
54
+ # # => Faraday::Whatever
89
55
  def lookup_middleware(key)
90
- load_middleware(key) ||
56
+ registered_middleware[key] ||
91
57
  raise(Faraday::Error, "#{key.inspect} is not registered on #{self}")
92
58
  end
93
59
 
@@ -95,35 +61,5 @@ module Faraday
95
61
  @middleware_mutex ||= Monitor.new
96
62
  @middleware_mutex.synchronize(&block)
97
63
  end
98
-
99
- def fetch_middleware(key)
100
- defined?(@registered_middleware) && @registered_middleware[key]
101
- end
102
-
103
- def load_middleware(key)
104
- value = fetch_middleware(key)
105
- case value
106
- when Module
107
- value
108
- when Symbol, String
109
- middleware_mutex do
110
- @registered_middleware[key] = const_get(value)
111
- end
112
- when Proc
113
- middleware_mutex do
114
- @registered_middleware[key] = value.call
115
- end
116
- when Array
117
- middleware_mutex do
118
- const, path = value
119
- if (root = @middleware_autoload_path)
120
- path = "#{root}/#{path}"
121
- end
122
- require(path)
123
- @registered_middleware[key] = const
124
- end
125
- load_middleware(key)
126
- end
127
- end
128
64
  end
129
65
  end
@@ -104,7 +104,7 @@ module Faraday
104
104
 
105
105
  # Public
106
106
  def each_key(&block)
107
- return to_enum(:each_key) unless block_given?
107
+ return to_enum(:each_key) unless block
108
108
 
109
109
  keys.each(&block)
110
110
  end
@@ -118,7 +118,7 @@ module Faraday
118
118
 
119
119
  # Public
120
120
  def each_value(&block)
121
- return to_enum(:each_value) unless block_given?
121
+ return to_enum(:each_value) unless block
122
122
 
123
123
  values.each(&block)
124
124
  end
@@ -168,7 +168,7 @@ module Faraday
168
168
  end
169
169
 
170
170
  def self.memoized(key, &block)
171
- unless block_given?
171
+ unless block
172
172
  raise ArgumentError, '#memoized must be called with a block'
173
173
  end
174
174
 
@@ -61,7 +61,7 @@ module Faraday
61
61
  def initialize(handlers = [], adapter = nil, &block)
62
62
  @adapter = adapter
63
63
  @handlers = handlers
64
- if block_given?
64
+ if block
65
65
  build(&block)
66
66
  elsif @handlers.empty?
67
67
  # default stack, if nothing else is configured
@@ -4,52 +4,45 @@ module Faraday
4
4
  class Request
5
5
  # Request middleware for the Authorization HTTP header
6
6
  class Authorization < Faraday::Middleware
7
- unless defined?(::Faraday::Request::Authorization::KEY)
8
- KEY = 'Authorization'
9
- end
10
-
11
- # @param type [String, Symbol]
12
- # @param token [String, Symbol, Hash]
13
- # @return [String] a header value
14
- def self.header(type, token)
15
- case token
16
- when String, Symbol
17
- "#{type} #{token}"
18
- when Hash
19
- build_hash(type.to_s, token)
20
- else
21
- raise ArgumentError,
22
- "Can't build an Authorization #{type}" \
23
- "header from #{token.inspect}"
24
- end
25
- end
26
-
27
- # @param type [String]
28
- # @param hash [Hash]
29
- # @return [String] type followed by comma-separated key=value pairs
30
- # @api private
31
- def self.build_hash(type, hash)
32
- comma = ', '
33
- values = []
34
- hash.each do |key, value|
35
- values << "#{key}=#{value.to_s.inspect}"
36
- end
37
- "#{type} #{values * comma}"
38
- end
7
+ KEY = 'Authorization'
39
8
 
40
9
  # @param app [#call]
41
10
  # @param type [String, Symbol] Type of Authorization
42
- # @param token [String, Symbol, Hash] Token value for the Authorization
43
- def initialize(app, type, token)
44
- @header_value = self.class.header(type, token)
11
+ # @param params [Array<String, Proc>] parameters to build the Authorization header.
12
+ # If the type is `:basic`, then these can be a login and password pair.
13
+ # Otherwise, a single value is expected that will be appended after the type.
14
+ # This value can be a proc, in which case it will be invoked on each request.
15
+ def initialize(app, type, *params)
16
+ @type = type
17
+ @params = params
45
18
  super(app)
46
19
  end
47
20
 
48
21
  # @param env [Faraday::Env]
49
- def call(env)
50
- env.request_headers[KEY] = @header_value unless env.request_headers[KEY]
51
- @app.call(env)
22
+ def on_request(env)
23
+ return if env.request_headers[KEY]
24
+
25
+ env.request_headers[KEY] = header_from(@type, *@params)
26
+ end
27
+
28
+ private
29
+
30
+ # @param type [String, Symbol]
31
+ # @param params [Array]
32
+ # @return [String] a header value
33
+ def header_from(type, *params)
34
+ if type.to_s.casecmp('basic').zero? && params.size == 2
35
+ Utils.basic_header_from(*params)
36
+ elsif params.size != 1
37
+ raise ArgumentError, "Unexpected params received (got #{params.size} instead of 1)"
38
+ else
39
+ value = params.first
40
+ value = value.call if value.is_a?(Proc)
41
+ "#{type} #{value}"
42
+ end
52
43
  end
53
44
  end
54
45
  end
55
46
  end
47
+
48
+ Faraday::Request.register_middleware(authorization: Faraday::Request::Authorization)
@@ -52,3 +52,5 @@ module Faraday
52
52
  end
53
53
  end
54
54
  end
55
+
56
+ Faraday::Request.register_middleware(instrumentation: Faraday::Request::Instrumentation)
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Faraday
6
+ class Request
7
+ # Request middleware that encodes the body as JSON.
8
+ #
9
+ # Processes only requests with matching Content-type or those without a type.
10
+ # If a request doesn't have a type but has a body, it sets the Content-type
11
+ # to JSON MIME-type.
12
+ #
13
+ # Doesn't try to encode bodies that already are in string form.
14
+ class Json < Middleware
15
+ MIME_TYPE = 'application/json'
16
+ MIME_TYPE_REGEX = %r{^application/(vnd\..+\+)?json$}.freeze
17
+
18
+ def on_request(env)
19
+ match_content_type(env) do |data|
20
+ env[:body] = encode(data)
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def encode(data)
27
+ ::JSON.generate(data)
28
+ end
29
+
30
+ def match_content_type(env)
31
+ return unless process_request?(env)
32
+
33
+ env[:request_headers][CONTENT_TYPE] ||= MIME_TYPE
34
+ yield env[:body] unless env[:body].respond_to?(:to_str)
35
+ end
36
+
37
+ def process_request?(env)
38
+ type = request_type(env)
39
+ body?(env) && (type.empty? || type.match?(MIME_TYPE_REGEX))
40
+ end
41
+
42
+ def body?(env)
43
+ (body = env[:body]) && !(body.respond_to?(:to_str) && body.empty?)
44
+ end
45
+
46
+ def request_type(env)
47
+ type = env[:request_headers][CONTENT_TYPE].to_s
48
+ type = type.split(';', 2).first if type.index(';')
49
+ type
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ Faraday::Request.register_middleware(json: Faraday::Request::Json)
@@ -104,3 +104,5 @@ module Faraday
104
104
  end
105
105
  end
106
106
  end
107
+
108
+ Faraday::Request.register_middleware(multipart: Faraday::Request::Multipart)
@@ -184,7 +184,7 @@ module Faraday
184
184
  if ex.is_a? Module
185
185
  error.is_a? ex
186
186
  else
187
- error.class.to_s == ex.to_s
187
+ Object.const_defined?(ex.to_s) && error.is_a?(Object.const_get(ex.to_s))
188
188
  end
189
189
  end
190
190
  end
@@ -237,3 +237,5 @@ module Faraday
237
237
  end
238
238
  end
239
239
  end
240
+
241
+ Faraday::Request.register_middleware(retry: Faraday::Request::Retry)
@@ -54,3 +54,5 @@ module Faraday
54
54
  end
55
55
  end
56
56
  end
57
+
58
+ Faraday::Request.register_middleware(url_encoded: Faraday::Request::UrlEncoded)
@@ -26,28 +26,11 @@ module Faraday
26
26
  # @return [RequestOptions] options
27
27
  #
28
28
  # rubocop:disable Style/StructInheritance
29
- class Request < Struct.new(
30
- :http_method, :path, :params, :headers, :body, :options
31
- )
29
+ class Request < Struct.new(:http_method, :path, :params, :headers, :body, :options)
32
30
  # rubocop:enable Style/StructInheritance
33
31
 
34
32
  extend MiddlewareRegistry
35
33
 
36
- register_middleware File.expand_path('request', __dir__),
37
- url_encoded: [:UrlEncoded, 'url_encoded'],
38
- multipart: [:Multipart, 'multipart'],
39
- retry: [:Retry, 'retry'],
40
- authorization: [:Authorization, 'authorization'],
41
- basic_auth: [
42
- :BasicAuthentication,
43
- 'basic_authentication'
44
- ],
45
- token_auth: [
46
- :TokenAuthentication,
47
- 'token_authentication'
48
- ],
49
- instrumentation: [:Instrumentation, 'instrumentation']
50
-
51
34
  # @param request_method [String]
52
35
  # @yield [request] for block customization, if block given
53
36
  # @yieldparam request [Request]
@@ -58,14 +41,6 @@ module Faraday
58
41
  end
59
42
  end
60
43
 
61
- def method
62
- warn <<~TEXT
63
- WARNING: `Faraday::Request##{__method__}` is deprecated; use `#http_method` instead. It will be removed in or after version 2.0.
64
- `Faraday::Request##{__method__}` called from #{caller_locations(1..1).first}
65
- TEXT
66
- http_method
67
- end
68
-
69
44
  # Replace params, preserving the existing hash type.
70
45
  #
71
46
  # @param hash [Hash] new params
@@ -140,11 +115,11 @@ module Faraday
140
115
  # @param serialised [Hash] the serialised object.
141
116
  def marshal_load(serialised)
142
117
  self.http_method = serialised[:http_method]
143
- self.body = serialised[:body]
144
- self.headers = serialised[:headers]
145
- self.path = serialised[:path]
146
- self.params = serialised[:params]
147
- self.options = serialised[:options]
118
+ self.body = serialised[:body]
119
+ self.headers = serialised[:headers]
120
+ self.path = serialised[:path]
121
+ self.params = serialised[:params]
122
+ self.options = serialised[:options]
148
123
  end
149
124
 
150
125
  # @return [Env] the Env for this Request
@@ -154,3 +129,10 @@ module Faraday
154
129
  end
155
130
  end
156
131
  end
132
+
133
+ require 'faraday/request/authorization'
134
+ require 'faraday/request/instrumentation'
135
+ require 'faraday/request/json'
136
+ require 'faraday/request/multipart'
137
+ require 'faraday/request/retry'
138
+ require 'faraday/request/url_encoded'
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Faraday
6
+ class Response
7
+ # Parse response bodies as JSON.
8
+ class Json < Middleware
9
+ def initialize(app = nil, parser_options: nil, content_type: /\bjson$/, preserve_raw: false)
10
+ super(app)
11
+ @parser_options = parser_options
12
+ @content_types = Array(content_type)
13
+ @preserve_raw = preserve_raw
14
+ end
15
+
16
+ def on_complete(env)
17
+ process_response(env) if parse_response?(env)
18
+ end
19
+
20
+ private
21
+
22
+ def process_response(env)
23
+ env[:raw_body] = env[:body] if @preserve_raw
24
+ env[:body] = parse(env[:body])
25
+ rescue StandardError, SyntaxError => e
26
+ raise Faraday::ParsingError.new(e, env[:response])
27
+ end
28
+
29
+ def parse(body)
30
+ ::JSON.parse(body, @parser_options || {}) unless body.strip.empty?
31
+ end
32
+
33
+ def parse_response?(env)
34
+ process_response_type?(env) &&
35
+ env[:body].respond_to?(:to_str)
36
+ end
37
+
38
+ def process_response_type?(env)
39
+ type = response_type(env)
40
+ @content_types.empty? || @content_types.any? do |pattern|
41
+ pattern.is_a?(Regexp) ? type.match?(pattern) : type == pattern
42
+ end
43
+ end
44
+
45
+ def response_type(env)
46
+ type = env[:response_headers][CONTENT_TYPE].to_s
47
+ type = type.split(';', 2).first if type.index(';')
48
+ type
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ Faraday::Response.register_middleware(json: Faraday::Response::Json)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'forwardable'
4
+ require 'logger'
4
5
  require 'faraday/logging/formatter'
5
6
 
6
7
  module Faraday
@@ -11,10 +12,7 @@ module Faraday
11
12
  class Logger < Middleware
12
13
  def initialize(app, logger = nil, options = {})
13
14
  super(app)
14
- logger ||= begin
15
- require 'logger'
16
- ::Logger.new($stdout)
17
- end
15
+ logger ||= ::Logger.new($stdout)
18
16
  formatter_class = options.delete(:formatter) || Logging::Formatter
19
17
  @formatter = formatter_class.new(logger: logger, options: options)
20
18
  yield @formatter if block_given?
@@ -31,3 +29,5 @@ module Faraday
31
29
  end
32
30
  end
33
31
  end
32
+
33
+ Faraday::Response.register_middleware(logger: Faraday::Response::Logger)
@@ -44,13 +44,21 @@ module Faraday
44
44
  body: env.body,
45
45
  request: {
46
46
  method: env.method,
47
+ url: env.url,
47
48
  url_path: env.url.path,
48
- params: env.params,
49
+ params: query_params(env),
49
50
  headers: env.request_headers,
50
51
  body: env.request_body
51
52
  }
52
53
  }
53
54
  end
55
+
56
+ def query_params(env)
57
+ env.request.params_encoder ||= Faraday::Utils.default_params_encoder
58
+ env.params_encoder.decode(env.url.query)
59
+ end
54
60
  end
55
61
  end
56
62
  end
63
+
64
+ Faraday::Response.register_middleware(raise_error: Faraday::Response::RaiseError)
@@ -5,25 +5,9 @@ require 'forwardable'
5
5
  module Faraday
6
6
  # Response represents an HTTP response from making an HTTP request.
7
7
  class Response
8
- # Used for simple response middleware.
9
- class Middleware < Faraday::Middleware
10
- # Override this to modify the environment after the response has finished.
11
- # Calls the `parse` method if defined
12
- # `parse` method can be defined as private, public and protected
13
- def on_complete(env)
14
- return unless respond_to?(:parse, true) && env.parse_body?
15
-
16
- env.body = parse(env.body)
17
- end
18
- end
19
-
20
8
  extend Forwardable
21
9
  extend MiddlewareRegistry
22
10
 
23
- register_middleware File.expand_path('response', __dir__),
24
- raise_error: [:RaiseError, 'raise_error'],
25
- logger: [:Logger, 'logger']
26
-
27
11
  def initialize(env = nil)
28
12
  @env = Env.from(env) if env
29
13
  @on_complete_callbacks = []
@@ -42,6 +26,7 @@ module Faraday
42
26
  def headers
43
27
  finished? ? env.response_headers : {}
44
28
  end
29
+
45
30
  def_delegator :headers, :[]
46
31
 
47
32
  def body
@@ -53,10 +38,10 @@ module Faraday
53
38
  end
54
39
 
55
40
  def on_complete(&block)
56
- if !finished?
57
- @on_complete_callbacks << block
58
- else
41
+ if finished?
59
42
  yield(env)
43
+ else
44
+ @on_complete_callbacks << block
60
45
  end
61
46
  self
62
47
  end
@@ -99,3 +84,7 @@ module Faraday
99
84
  end
100
85
  end
101
86
  end
87
+
88
+ require 'faraday/response/json'
89
+ require 'faraday/response/logger'
90
+ require 'faraday/response/raise_error'
@@ -111,7 +111,7 @@ module Faraday
111
111
  def parse(header_string)
112
112
  return unless header_string && !header_string.empty?
113
113
 
114
- headers = header_string.split(/\r\n/)
114
+ headers = header_string.split("\r\n")
115
115
 
116
116
  # Find the last set of response headers.
117
117
  start_index = headers.rindex { |x| x.start_with?('HTTP/') } || 0
data/lib/faraday/utils.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'base64'
4
+ require 'uri'
3
5
  require 'faraday/utils/headers'
4
6
  require 'faraday/utils/params_hash'
5
7
 
@@ -51,6 +53,12 @@ module Faraday
51
53
  @default_params_encoder ||= NestedParamsEncoder
52
54
  end
53
55
 
56
+ def basic_header_from(login, pass)
57
+ value = Base64.encode64("#{login}:#{pass}")
58
+ value.delete!("\n")
59
+ "Basic #{value}"
60
+ end
61
+
54
62
  class << self
55
63
  attr_writer :default_params_encoder
56
64
  end
@@ -71,10 +79,7 @@ module Faraday
71
79
  end
72
80
 
73
81
  def default_uri_parser
74
- @default_uri_parser ||= begin
75
- require 'uri'
76
- Kernel.method(:URI)
77
- end
82
+ @default_uri_parser ||= Kernel.method(:URI)
78
83
  end
79
84
 
80
85
  def default_uri_parser=(parser)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Faraday
4
- VERSION = '1.7.0'
4
+ VERSION = '2.0.0.alpha-1'
5
5
  end