|
2 | 2 | require 'cgi' |
3 | 3 | require 'set' |
4 | 4 | require 'forwardable' |
| 5 | +require 'faraday/middleware_registry' |
| 6 | +require 'faraday/dependency_loader' |
5 | 7 |
|
6 | 8 | # This is the main namespace for Faraday. |
7 | 9 | # |
@@ -147,126 +149,6 @@ def self.default_connection_options=(options) |
147 | 149 | Timer = Timeout |
148 | 150 | end |
149 | 151 |
|
150 | | - # Adds the ability for other modules to register and lookup |
151 | | - # middleware classes. |
152 | | - module MiddlewareRegistry |
153 | | - # Register middleware class(es) on the current module. |
154 | | - # |
155 | | - # @param autoload_path [String] Middleware autoload path |
156 | | - # @param mapping [Hash{Symbol => Module, Symbol, Array<Module, Symbol, String>}] Middleware mapping from a lookup symbol to a reference to the middleware. - Classes can be expressed as: |
157 | | - # - a fully qualified constant |
158 | | - # - a Symbol |
159 | | - # - a Proc that will be lazily called to return the former |
160 | | - # - an array is given, its first element is the constant or symbol, |
161 | | - # and its second is a file to `require`. |
162 | | - # @return [void] |
163 | | - # |
164 | | - # @example Lookup by a constant |
165 | | - # |
166 | | - # module Faraday |
167 | | - # class Whatever |
168 | | - # # Middleware looked up by :foo returns Faraday::Whatever::Foo. |
169 | | - # register_middleware :foo => Foo |
170 | | - # end |
171 | | - # end |
172 | | - # |
173 | | - # @example Lookup by a symbol |
174 | | - # |
175 | | - # module Faraday |
176 | | - # class Whatever |
177 | | - # # Middleware looked up by :bar returns Faraday::Whatever.const_get(:Bar) |
178 | | - # register_middleware :bar => :Bar |
179 | | - # end |
180 | | - # end |
181 | | - # |
182 | | - # @example Lookup by a symbol and string in an array |
183 | | - # |
184 | | - # module Faraday |
185 | | - # class Whatever |
186 | | - # # Middleware looked up by :baz requires 'baz' and returns Faraday::Whatever.const_get(:Baz) |
187 | | - # register_middleware :baz => [:Baz, 'baz'] |
188 | | - # end |
189 | | - # end |
190 | | - # |
191 | | - def register_middleware(autoload_path = nil, mapping = nil) |
192 | | - if mapping.nil? |
193 | | - mapping = autoload_path |
194 | | - autoload_path = nil |
195 | | - end |
196 | | - middleware_mutex do |
197 | | - @middleware_autoload_path = autoload_path if autoload_path |
198 | | - (@registered_middleware ||= {}).update(mapping) |
199 | | - end |
200 | | - end |
201 | | - |
202 | | - # Unregister a previously registered middleware class. |
203 | | - # |
204 | | - # @param key [Symbol] key for the registered middleware. |
205 | | - def unregister_middleware(key) |
206 | | - @registered_middleware.delete(key) |
207 | | - end |
208 | | - |
209 | | - # Lookup middleware class with a registered Symbol shortcut. |
210 | | - # |
211 | | - # @param key [Symbol] key for the registered middleware. |
212 | | - # @return [Class] a middleware Class. |
213 | | - # @raise [Faraday::Error] if given key is not registered |
214 | | - # |
215 | | - # @example |
216 | | - # |
217 | | - # module Faraday |
218 | | - # class Whatever |
219 | | - # register_middleware :foo => Foo |
220 | | - # end |
221 | | - # end |
222 | | - # |
223 | | - # Faraday::Whatever.lookup_middleware(:foo) |
224 | | - # # => Faraday::Whatever::Foo |
225 | | - # |
226 | | - def lookup_middleware(key) |
227 | | - load_middleware(key) || |
228 | | - raise(Faraday::Error.new("#{key.inspect} is not registered on #{self}")) |
229 | | - end |
230 | | - |
231 | | - def middleware_mutex(&block) |
232 | | - @middleware_mutex ||= begin |
233 | | - require 'monitor' |
234 | | - Monitor.new |
235 | | - end |
236 | | - @middleware_mutex.synchronize(&block) |
237 | | - end |
238 | | - |
239 | | - def fetch_middleware(key) |
240 | | - defined?(@registered_middleware) && @registered_middleware[key] |
241 | | - end |
242 | | - |
243 | | - def load_middleware(key) |
244 | | - value = fetch_middleware(key) |
245 | | - case value |
246 | | - when Module |
247 | | - value |
248 | | - when Symbol, String |
249 | | - middleware_mutex do |
250 | | - @registered_middleware[key] = const_get(value) |
251 | | - end |
252 | | - when Proc |
253 | | - middleware_mutex do |
254 | | - @registered_middleware[key] = value.call |
255 | | - end |
256 | | - when Array |
257 | | - middleware_mutex do |
258 | | - const, path = value |
259 | | - if root = @middleware_autoload_path |
260 | | - path = "#{root}/#{path}" |
261 | | - end |
262 | | - require(path) |
263 | | - @registered_middleware[key] = const |
264 | | - end |
265 | | - load_middleware(key) |
266 | | - end |
267 | | - end |
268 | | - end |
269 | | - |
270 | 152 | require_libs "utils", "options", "connection", "rack_builder", "parameters", |
271 | 153 | "middleware", "adapter", "request", "response", "upload_io", "error" |
272 | 154 |
|
|
0 commit comments