faraday 0.12.2 → 1.3.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 (105) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +350 -0
  3. data/LICENSE.md +1 -1
  4. data/README.md +22 -325
  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 +120 -188
  9. data/lib/faraday/adapter.rb +84 -22
  10. data/lib/faraday/adapter/em_http.rb +150 -104
  11. data/lib/faraday/adapter/em_http_ssl_patch.rb +24 -18
  12. data/lib/faraday/adapter/em_synchrony.rb +110 -63
  13. data/lib/faraday/adapter/em_synchrony/parallel_manager.rb +18 -15
  14. data/lib/faraday/adapter/excon.rb +98 -54
  15. data/lib/faraday/adapter/httpclient.rb +83 -59
  16. data/lib/faraday/adapter/net_http_persistent.rb +68 -27
  17. data/lib/faraday/adapter/patron.rb +86 -37
  18. data/lib/faraday/adapter/rack.rb +30 -13
  19. data/lib/faraday/adapter/test.rb +103 -62
  20. data/lib/faraday/adapter/typhoeus.rb +7 -115
  21. data/lib/faraday/adapter_registry.rb +30 -0
  22. data/lib/faraday/autoload.rb +46 -36
  23. data/lib/faraday/connection.rb +336 -177
  24. data/lib/faraday/dependency_loader.rb +37 -0
  25. data/lib/faraday/encoders/flat_params_encoder.rb +105 -0
  26. data/lib/faraday/encoders/nested_params_encoder.rb +176 -0
  27. data/lib/faraday/error.rb +126 -37
  28. data/lib/faraday/file_part.rb +128 -0
  29. data/lib/faraday/logging/formatter.rb +105 -0
  30. data/lib/faraday/methods.rb +6 -0
  31. data/lib/faraday/middleware.rb +19 -25
  32. data/lib/faraday/middleware_registry.rb +129 -0
  33. data/lib/faraday/options.rb +39 -193
  34. data/lib/faraday/options/connection_options.rb +22 -0
  35. data/lib/faraday/options/env.rb +181 -0
  36. data/lib/faraday/options/proxy_options.rb +28 -0
  37. data/lib/faraday/options/request_options.rb +22 -0
  38. data/lib/faraday/options/ssl_options.rb +59 -0
  39. data/lib/faraday/param_part.rb +53 -0
  40. data/lib/faraday/parameters.rb +4 -196
  41. data/lib/faraday/rack_builder.rb +77 -63
  42. data/lib/faraday/request.rb +94 -32
  43. data/lib/faraday/request/authorization.rb +44 -30
  44. data/lib/faraday/request/basic_authentication.rb +14 -7
  45. data/lib/faraday/request/instrumentation.rb +45 -27
  46. data/lib/faraday/request/multipart.rb +86 -48
  47. data/lib/faraday/request/retry.rb +209 -134
  48. data/lib/faraday/request/token_authentication.rb +15 -10
  49. data/lib/faraday/request/url_encoded.rb +43 -23
  50. data/lib/faraday/response.rb +27 -23
  51. data/lib/faraday/response/logger.rb +22 -69
  52. data/lib/faraday/response/raise_error.rb +49 -14
  53. data/lib/faraday/utils.rb +38 -247
  54. data/lib/faraday/utils/headers.rb +139 -0
  55. data/lib/faraday/utils/params_hash.rb +61 -0
  56. data/lib/faraday/version.rb +5 -0
  57. data/spec/external_adapters/faraday_specs_setup.rb +14 -0
  58. data/spec/faraday/adapter/em_http_spec.rb +47 -0
  59. data/spec/faraday/adapter/em_synchrony_spec.rb +16 -0
  60. data/spec/faraday/adapter/excon_spec.rb +49 -0
  61. data/spec/faraday/adapter/httpclient_spec.rb +73 -0
  62. data/spec/faraday/adapter/net_http_persistent_spec.rb +57 -0
  63. data/spec/faraday/adapter/net_http_spec.rb +64 -0
  64. data/spec/faraday/adapter/patron_spec.rb +18 -0
  65. data/spec/faraday/adapter/rack_spec.rb +8 -0
  66. data/spec/faraday/adapter/test_spec.rb +260 -0
  67. data/spec/faraday/adapter/typhoeus_spec.rb +7 -0
  68. data/spec/faraday/adapter_registry_spec.rb +28 -0
  69. data/spec/faraday/adapter_spec.rb +55 -0
  70. data/spec/faraday/composite_read_io_spec.rb +80 -0
  71. data/spec/faraday/connection_spec.rb +691 -0
  72. data/spec/faraday/error_spec.rb +60 -0
  73. data/spec/faraday/middleware_spec.rb +52 -0
  74. data/spec/faraday/options/env_spec.rb +70 -0
  75. data/spec/faraday/options/options_spec.rb +297 -0
  76. data/spec/faraday/options/proxy_options_spec.rb +37 -0
  77. data/spec/faraday/options/request_options_spec.rb +19 -0
  78. data/spec/faraday/params_encoders/flat_spec.rb +42 -0
  79. data/spec/faraday/params_encoders/nested_spec.rb +142 -0
  80. data/spec/faraday/rack_builder_spec.rb +345 -0
  81. data/spec/faraday/request/authorization_spec.rb +88 -0
  82. data/spec/faraday/request/instrumentation_spec.rb +76 -0
  83. data/spec/faraday/request/multipart_spec.rb +302 -0
  84. data/spec/faraday/request/retry_spec.rb +242 -0
  85. data/spec/faraday/request/url_encoded_spec.rb +83 -0
  86. data/spec/faraday/request_spec.rb +120 -0
  87. data/spec/faraday/response/logger_spec.rb +220 -0
  88. data/spec/faraday/response/middleware_spec.rb +68 -0
  89. data/spec/faraday/response/raise_error_spec.rb +169 -0
  90. data/spec/faraday/response_spec.rb +75 -0
  91. data/spec/faraday/utils/headers_spec.rb +82 -0
  92. data/spec/faraday/utils_spec.rb +56 -0
  93. data/spec/faraday_spec.rb +37 -0
  94. data/spec/spec_helper.rb +132 -0
  95. data/spec/support/disabling_stub.rb +14 -0
  96. data/spec/support/fake_safe_buffer.rb +15 -0
  97. data/spec/support/helper_methods.rb +133 -0
  98. data/spec/support/shared_examples/adapter.rb +105 -0
  99. data/spec/support/shared_examples/params_encoder.rb +18 -0
  100. data/spec/support/shared_examples/request_method.rb +262 -0
  101. data/spec/support/streaming_response_checker.rb +35 -0
  102. data/spec/support/webmock_rack_app.rb +68 -0
  103. metadata +109 -10
  104. data/lib/faraday/adapter/net_http.rb +0 -135
  105. data/lib/faraday/upload_io.rb +0 -67
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task default: :spec
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Requires Ruby with rspec and faraday gems.
4
+ # rspec client_spec.rb
5
+
6
+ require 'faraday'
7
+ require 'json'
8
+
9
+ # Example API client
10
+ class Client
11
+ def initialize(conn)
12
+ @conn = conn
13
+ end
14
+
15
+ def sushi(jname)
16
+ res = @conn.get("/#{jname}")
17
+ data = JSON.parse(res.body)
18
+ data['name']
19
+ end
20
+ end
21
+
22
+ RSpec.describe Client do
23
+ let(:stubs) { Faraday::Adapter::Test::Stubs.new }
24
+ let(:conn) { Faraday.new { |b| b.adapter(:test, stubs) } }
25
+ let(:client) { Client.new(conn) }
26
+
27
+ it 'parses name' do
28
+ stubs.get('/ebi') do |env|
29
+ # optional: you can inspect the Faraday::Env
30
+ expect(env.url.path).to eq('/ebi')
31
+ [
32
+ 200,
33
+ { 'Content-Type': 'application/javascript' },
34
+ '{"name": "shrimp"}'
35
+ ]
36
+ end
37
+
38
+ # uncomment to trigger stubs.verify_stubbed_calls failure
39
+ # stubs.get('/unused') { [404, {}, ''] }
40
+
41
+ expect(client.sushi('ebi')).to eq('shrimp')
42
+ stubs.verify_stubbed_calls
43
+ end
44
+
45
+ it 'handles 404' do
46
+ stubs.get('/ebi') do
47
+ [
48
+ 404,
49
+ { 'Content-Type': 'application/javascript' },
50
+ '{}'
51
+ ]
52
+ end
53
+ expect(client.sushi('ebi')).to be_nil
54
+ stubs.verify_stubbed_calls
55
+ end
56
+
57
+ it 'handles exception' do
58
+ stubs.get('/ebi') do
59
+ raise Faraday::ConnectionFailed, nil
60
+ end
61
+
62
+ expect { client.sushi('ebi') }.to raise_error(Faraday::ConnectionFailed)
63
+ stubs.verify_stubbed_calls
64
+ end
65
+ end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Requires Ruby with test-unit and faraday gems.
4
+ # ruby client_test.rb
5
+
6
+ require 'faraday'
7
+ require 'json'
8
+ require 'test/unit'
9
+
10
+ # Example API client
11
+ class Client
12
+ def initialize(conn)
13
+ @conn = conn
14
+ end
15
+
16
+ def sushi(jname)
17
+ res = @conn.get("/#{jname}")
18
+ data = JSON.parse(res.body)
19
+ data['name']
20
+ end
21
+ end
22
+
23
+ # Example API client test
24
+ class ClientTest < Test::Unit::TestCase
25
+ def test_sushi_name
26
+ stubs = Faraday::Adapter::Test::Stubs.new
27
+ stubs.get('/ebi') do |env|
28
+ # optional: you can inspect the Faraday::Env
29
+ assert_equal '/ebi', env.url.path
30
+ [
31
+ 200,
32
+ { 'Content-Type': 'application/javascript' },
33
+ '{"name": "shrimp"}'
34
+ ]
35
+ end
36
+
37
+ # uncomment to trigger stubs.verify_stubbed_calls failure
38
+ # stubs.get('/unused') { [404, {}, ''] }
39
+
40
+ cli = client(stubs)
41
+ assert_equal 'shrimp', cli.sushi('ebi')
42
+ stubs.verify_stubbed_calls
43
+ end
44
+
45
+ def test_sushi_404
46
+ stubs = Faraday::Adapter::Test::Stubs.new
47
+ stubs.get('/ebi') do
48
+ [
49
+ 404,
50
+ { 'Content-Type': 'application/javascript' },
51
+ '{}'
52
+ ]
53
+ end
54
+
55
+ cli = client(stubs)
56
+ assert_nil cli.sushi('ebi')
57
+ stubs.verify_stubbed_calls
58
+ end
59
+
60
+ def test_sushi_exception
61
+ stubs = Faraday::Adapter::Test::Stubs.new
62
+ stubs.get('/ebi') do
63
+ raise Faraday::ConnectionFailed, nil
64
+ end
65
+
66
+ cli = client(stubs)
67
+ assert_raise Faraday::ConnectionFailed do
68
+ cli.sushi('ebi')
69
+ end
70
+ stubs.verify_stubbed_calls
71
+ end
72
+
73
+ def client(stubs)
74
+ conn = Faraday.new do |builder|
75
+ builder.adapter :test, stubs
76
+ end
77
+ Client.new(conn)
78
+ end
79
+ end
data/lib/faraday.rb CHANGED
@@ -1,244 +1,176 @@
1
- require 'thread'
1
+ # frozen_string_literal: true
2
+
2
3
  require 'cgi'
4
+ require 'date'
3
5
  require 'set'
4
6
  require 'forwardable'
7
+ require 'faraday/middleware_registry'
8
+ require 'faraday/dependency_loader'
9
+
10
+ unless defined?(::Faraday::Timer)
11
+ require 'timeout'
12
+ ::Faraday::Timer = Timeout
13
+ end
5
14
 
6
- # Public: This is the main namespace for Faraday. You can either use it to
7
- # create Faraday::Connection objects, or access it directly.
15
+ require 'faraday/version'
16
+ require 'faraday/methods'
17
+ require 'faraday/utils'
18
+ require 'faraday/options'
19
+ require 'faraday/connection'
20
+ require 'faraday/rack_builder'
21
+ require 'faraday/parameters'
22
+ require 'faraday/middleware'
23
+ require 'faraday/adapter'
24
+ require 'faraday/request'
25
+ require 'faraday/response'
26
+ require 'faraday/error'
27
+ require 'faraday/file_part'
28
+ require 'faraday/param_part'
29
+
30
+ require 'faraday/net_http'
31
+
32
+ # This is the main namespace for Faraday.
8
33
  #
9
- # Examples
34
+ # It provides methods to create {Connection} objects, and HTTP-related
35
+ # methods to use directly.
10
36
  #
37
+ # @example Helpful class methods for easy usage
11
38
  # Faraday.get "http://faraday.com"
12
39
  #
40
+ # @example Helpful class method `.new` to create {Connection} objects.
13
41
  # conn = Faraday.new "http://faraday.com"
14
42
  # conn.get '/'
15
43
  #
16
44
  module Faraday
17
- VERSION = "0.12.2"
18
-
19
45
  class << self
20
- # Public: Gets or sets the root path that Faraday is being loaded from.
21
- # This is the root from where the libraries are auto-loaded from.
46
+ # The root path that Faraday is being loaded from.
47
+ #
48
+ # This is the root from where the libraries are auto-loaded.
49
+ #
50
+ # @return [String]
22
51
  attr_accessor :root_path
23
52
 
24
- # Public: Gets or sets the path that the Faraday libs are loaded from.
53
+ # Gets or sets the path that the Faraday libs are loaded from.
54
+ # @return [String]
25
55
  attr_accessor :lib_path
26
56
 
27
- # Public: Gets or sets the Symbol key identifying a default Adapter to use
28
- # for the default Faraday::Connection.
57
+ # @overload default_adapter
58
+ # Gets the Symbol key identifying a default Adapter to use
59
+ # for the default {Faraday::Connection}. Defaults to `:net_http`.
60
+ # @return [Symbol] the default adapter
61
+ # @overload default_adapter=(adapter)
62
+ # Updates default adapter while resetting {.default_connection}.
63
+ # @return [Symbol] the new default_adapter.
29
64
  attr_reader :default_adapter
30
65
 
31
- # Public: Sets the default Faraday::Connection for simple scripts that
32
- # access the Faraday constant directly.
33
- #
34
- # Faraday.get "https://faraday.com"
66
+ # Documented below, see default_connection
35
67
  attr_writer :default_connection
36
68
 
37
- # Public: Initializes a new Faraday::Connection.
38
- #
39
- # url - The optional String base URL to use as a prefix for all
40
- # requests. Can also be the options Hash.
41
- # options - The optional Hash used to configure this Faraday::Connection.
42
- # Any of these values will be set on every request made, unless
43
- # overridden for a specific request.
44
- # :url - String base URL.
45
- # :params - Hash of URI query unencoded key/value pairs.
46
- # :headers - Hash of unencoded HTTP header key/value pairs.
47
- # :request - Hash of request options.
48
- # :ssl - Hash of SSL options.
49
- # :proxy - Hash of Proxy options.
50
- #
51
- # Examples
52
- #
69
+ # Tells Faraday to ignore the environment proxy (http_proxy).
70
+ # Defaults to `false`.
71
+ # @return [Boolean]
72
+ attr_accessor :ignore_env_proxy
73
+
74
+ # Initializes a new {Connection}.
75
+ #
76
+ # @param url [String,Hash] The optional String base URL to use as a prefix
77
+ # for all requests. Can also be the options Hash. Any of these
78
+ # values will be set on every request made, unless overridden
79
+ # for a specific request.
80
+ # @param options [Hash]
81
+ # @option options [String] :url Base URL
82
+ # @option options [Hash] :params Hash of unencoded URI query params.
83
+ # @option options [Hash] :headers Hash of unencoded HTTP headers.
84
+ # @option options [Hash] :request Hash of request options.
85
+ # @option options [Hash] :ssl Hash of SSL options.
86
+ # @option options [Hash] :proxy Hash of Proxy options.
87
+ # @return [Faraday::Connection]
88
+ #
89
+ # @example With an URL argument
53
90
  # Faraday.new 'http://faraday.com'
54
- #
55
- # # http://faraday.com?page=1
56
- # Faraday.new 'http://faraday.com', :params => {:page => 1}
57
- #
58
- # # same
59
- #
60
- # Faraday.new :url => 'http://faraday.com',
61
- # :params => {:page => 1}
62
- #
63
- # Returns a Faraday::Connection.
64
- def new(url = nil, options = nil)
65
- block = block_given? ? Proc.new : nil
66
- options = options ? default_connection_options.merge(options) : default_connection_options
91
+ # # => Faraday::Connection to http://faraday.com
92
+ #
93
+ # @example With an URL argument and an options hash
94
+ # Faraday.new 'http://faraday.com', params: { page: 1 }
95
+ # # => Faraday::Connection to http://faraday.com?page=1
96
+ #
97
+ # @example With everything in an options hash
98
+ # Faraday.new url: 'http://faraday.com',
99
+ # params: { page: 1 }
100
+ # # => Faraday::Connection to http://faraday.com?page=1
101
+ def new(url = nil, options = {}, &block)
102
+ options = default_connection_options.merge(options)
67
103
  Faraday::Connection.new(url, options, &block)
68
104
  end
69
105
 
106
+ # @private
70
107
  # Internal: Requires internal Faraday libraries.
71
108
  #
72
- # *libs - One or more relative String names to Faraday classes.
73
- #
74
- # Returns nothing.
109
+ # @param libs [Array] one or more relative String names to Faraday classes.
110
+ # @return [void]
75
111
  def require_libs(*libs)
76
112
  libs.each do |lib|
77
113
  require "#{lib_path}/#{lib}"
78
114
  end
79
115
  end
80
116
 
81
- # Public: Updates default adapter while resetting
82
- # #default_connection.
83
- #
84
- # Returns the new default_adapter.
117
+ alias require_lib require_libs
118
+
119
+ # Documented elsewhere, see default_adapter reader
85
120
  def default_adapter=(adapter)
86
121
  @default_connection = nil
87
122
  @default_adapter = adapter
88
123
  end
89
124
 
90
- alias require_lib require_libs
91
-
92
- def respond_to?(symbol, include_private = false)
125
+ def respond_to_missing?(symbol, include_private = false)
93
126
  default_connection.respond_to?(symbol, include_private) || super
94
127
  end
95
128
 
96
- private
97
- # Internal: Proxies method calls on the Faraday constant to
98
- # #default_connection.
99
- def method_missing(name, *args, &block)
100
- default_connection.send(name, *args, &block)
129
+ # @overload default_connection
130
+ # Gets the default connection used for simple scripts.
131
+ # @return [Faraday::Connection] a connection configured with
132
+ # the default_adapter.
133
+ # @overload default_connection=(connection)
134
+ # @param connection [Faraday::Connection]
135
+ # Sets the default {Faraday::Connection} for simple scripts that
136
+ # access the Faraday constant directly, such as
137
+ # <code>Faraday.get "https://faraday.com"</code>.
138
+ def default_connection
139
+ @default_connection ||= Connection.new(default_connection_options)
101
140
  end
102
- end
103
-
104
- self.root_path = File.expand_path "..", __FILE__
105
- self.lib_path = File.expand_path "../faraday", __FILE__
106
- self.default_adapter = :net_http
107
-
108
- # Gets the default connection used for simple scripts.
109
- #
110
- # Returns a Faraday::Connection, configured with the #default_adapter.
111
- def self.default_connection
112
- @default_connection ||= Connection.new(default_connection_options)
113
- end
114
-
115
- # Gets the default connection options used when calling Faraday#new.
116
- #
117
- # Returns a Faraday::ConnectionOptions.
118
- def self.default_connection_options
119
- @default_connection_options ||= ConnectionOptions.new
120
- end
121
-
122
- # Public: Sets the default options used when calling Faraday#new.
123
- def self.default_connection_options=(options)
124
- @default_connection = nil
125
- @default_connection_options = ConnectionOptions.from(options)
126
- end
127
141
 
128
- unless const_defined? :Timer
129
- require 'timeout'
130
- Timer = Timeout
131
- end
132
-
133
- # Public: Adds the ability for other modules to register and lookup
134
- # middleware classes.
135
- module MiddlewareRegistry
136
- # Public: Register middleware class(es) on the current module.
137
- #
138
- # mapping - A Hash mapping Symbol keys to classes. Classes can be expressed
139
- # as fully qualified constant, or a Proc that will be lazily
140
- # called to return the former.
141
- #
142
- # Examples
142
+ # Gets the default connection options used when calling {Faraday#new}.
143
143
  #
144
- # module Faraday
145
- # class Whatever
146
- # # Middleware looked up by :foo returns Faraday::Whatever::Foo.
147
- # register_middleware :foo => Foo
148
- #
149
- # # Middleware looked up by :bar returns Faraday::Whatever.const_get(:Bar)
150
- # register_middleware :bar => :Bar
151
- #
152
- # # Middleware looked up by :baz requires 'baz' and returns Faraday::Whatever.const_get(:Baz)
153
- # register_middleware :baz => [:Baz, 'baz']
154
- # end
155
- # end
156
- #
157
- # Returns nothing.
158
- def register_middleware(autoload_path = nil, mapping = nil)
159
- if mapping.nil?
160
- mapping = autoload_path
161
- autoload_path = nil
162
- end
163
- middleware_mutex do
164
- @middleware_autoload_path = autoload_path if autoload_path
165
- (@registered_middleware ||= {}).update(mapping)
166
- end
144
+ # @return [Faraday::ConnectionOptions]
145
+ def default_connection_options
146
+ @default_connection_options ||= ConnectionOptions.new
167
147
  end
168
148
 
169
- # Public: Lookup middleware class with a registered Symbol shortcut.
170
- #
171
- # key - The Symbol key for the registered middleware.
172
- #
173
- # Examples
149
+ # Sets the default options used when calling {Faraday#new}.
174
150
  #
175
- # module Faraday
176
- # class Whatever
177
- # register_middleware :foo => Foo
178
- # end
179
- # end
180
- #
181
- # Faraday::Whatever.lookup_middleware(:foo)
182
- # # => Faraday::Whatever::Foo
183
- #
184
- # Returns a middleware Class.
185
- def lookup_middleware(key)
186
- load_middleware(key) ||
187
- raise(Faraday::Error.new("#{key.inspect} is not registered on #{self}"))
188
- end
189
-
190
- def middleware_mutex(&block)
191
- @middleware_mutex ||= begin
192
- require 'monitor'
193
- Monitor.new
194
- end
195
- @middleware_mutex.synchronize(&block)
151
+ # @param options [Hash, Faraday::ConnectionOptions]
152
+ def default_connection_options=(options)
153
+ @default_connection = nil
154
+ @default_connection_options = ConnectionOptions.from(options)
196
155
  end
197
156
 
198
- def fetch_middleware(key)
199
- defined?(@registered_middleware) && @registered_middleware[key]
200
- end
157
+ private
201
158
 
202
- def load_middleware(key)
203
- value = fetch_middleware(key)
204
- case value
205
- when Module
206
- value
207
- when Symbol, String
208
- middleware_mutex do
209
- @registered_middleware[key] = const_get(value)
210
- end
211
- when Proc
212
- middleware_mutex do
213
- @registered_middleware[key] = value.call
214
- end
215
- when Array
216
- middleware_mutex do
217
- const, path = value
218
- if root = @middleware_autoload_path
219
- path = "#{root}/#{path}"
220
- end
221
- require(path)
222
- @registered_middleware[key] = const
223
- end
224
- load_middleware(key)
159
+ # Internal: Proxies method calls on the Faraday constant to
160
+ # .default_connection.
161
+ def method_missing(name, *args, &block)
162
+ if default_connection.respond_to?(name)
163
+ default_connection.send(name, *args, &block)
164
+ else
165
+ super
225
166
  end
226
167
  end
227
168
  end
228
169
 
229
- def self.const_missing(name)
230
- if name.to_sym == :Builder
231
- warn "Faraday::Builder is now Faraday::RackBuilder."
232
- const_set name, RackBuilder
233
- else
234
- super
235
- end
236
- end
237
-
238
- require_libs "utils", "options", "connection", "rack_builder", "parameters",
239
- "middleware", "adapter", "request", "response", "upload_io", "error"
170
+ self.ignore_env_proxy = false
171
+ self.root_path = File.expand_path __dir__
172
+ self.lib_path = File.expand_path 'faraday', __dir__
173
+ self.default_adapter = :net_http
240
174
 
241
- if !ENV["FARADAY_NO_AUTOLOAD"]
242
- require_lib 'autoload'
243
- end
175
+ require_lib 'autoload' unless ENV['FARADAY_NO_AUTOLOAD']
244
176
  end