module Faraday::MiddlewareRegistry
Adds the ability for other modules to register and lookup middleware classes.
Public Instance Methods
lookup_middleware(key)
click to toggle source
Lookup middleware class with a registered Symbol shortcut.
@param key [Symbol] key for the registered middleware. @return [Class] a middleware Class. @raise [Faraday::Error] if given key is not registered
@example
module Faraday class Whatever < Middleware register_middleware(foo: Whatever) end end Faraday::Middleware.lookup_middleware(:foo) # => Faraday::Whatever
# File lib/faraday/middleware_registry.rb, line 55 def lookup_middleware(key) load_middleware(key) || raise(Faraday::Error, "#{key.inspect} is not registered on #{self}") end
register_middleware(**mappings)
click to toggle source
Register middleware class(es) on the current module.
@param mappings [Hash] Middleware
mappings from a lookup symbol to a middleware class. @return [void]
@example Lookup by a constant
module Faraday class Whatever < Middleware # Middleware looked up by :foo returns Faraday::Whatever::Foo. register_middleware(foo: Whatever) end end
# File lib/faraday/middleware_registry.rb, line 26 def register_middleware(**mappings) middleware_mutex do registered_middleware.update(mappings) end end
registered_middleware()
click to toggle source
# File lib/faraday/middleware_registry.rb, line 9 def registered_middleware @registered_middleware ||= {} end
unregister_middleware(key)
click to toggle source
Unregister a previously registered middleware class.
@param key [Symbol] key for the registered middleware.
# File lib/faraday/middleware_registry.rb, line 35 def unregister_middleware(key) registered_middleware.delete(key) end
Private Instance Methods
load_middleware(key)
click to toggle source
# File lib/faraday/middleware_registry.rb, line 67 def load_middleware(key) value = registered_middleware[key] case value when Module value when Symbol, String middleware_mutex do @registered_middleware[key] = const_get(value) end when Proc middleware_mutex do @registered_middleware[key] = value.call end end end
middleware_mutex(&block)
click to toggle source
# File lib/faraday/middleware_registry.rb, line 62 def middleware_mutex(&block) @middleware_mutex ||= Monitor.new @middleware_mutex.synchronize(&block) end