module Faraday::MiddlewareRegistry

Adds the ability for other modules to register and lookup middleware classes.

Public Instance Methods

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 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
# File lib/faraday/middleware_registry.rb, line 9
def registered_middleware
  @registered_middleware ||= {}
end

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