86 lines
2.4 KiB
Ruby
86 lines
2.4 KiB
Ruby
|
module Faraday
|
||
|
# Internal: Adds the ability for other modules to manage autoloadable
|
||
|
# constants.
|
||
|
module AutoloadHelper
|
||
|
# Internal: Registers the constants to be auto loaded.
|
||
|
#
|
||
|
# prefix - The String require prefix. If the path is inside Faraday, then
|
||
|
# it will be prefixed with the root path of this loaded Faraday
|
||
|
# version.
|
||
|
# options - Hash of Symbol => String library names.
|
||
|
#
|
||
|
# Examples.
|
||
|
#
|
||
|
# Faraday.autoload_all 'faraday/foo',
|
||
|
# :Bar => 'bar'
|
||
|
#
|
||
|
# # requires faraday/foo/bar to load Faraday::Bar.
|
||
|
# Faraday::Bar
|
||
|
#
|
||
|
#
|
||
|
# Returns nothing.
|
||
|
def autoload_all(prefix, options)
|
||
|
if prefix =~ /^faraday(\/|$)/i
|
||
|
prefix = File.join(Faraday.root_path, prefix)
|
||
|
end
|
||
|
options.each do |const_name, path|
|
||
|
autoload const_name, File.join(prefix, path)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Internal: Loads each autoloaded constant. If thread safety is a concern,
|
||
|
# wrap this in a Mutex.
|
||
|
#
|
||
|
# Returns nothing.
|
||
|
def load_autoloaded_constants
|
||
|
constants.each do |const|
|
||
|
const_get(const) if autoload?(const)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Internal: Filters the module's contents with those that have been already
|
||
|
# autoloaded.
|
||
|
#
|
||
|
# Returns an Array of Class/Module objects.
|
||
|
def all_loaded_constants
|
||
|
constants.map { |c| const_get(c) }.
|
||
|
select { |a| a.respond_to?(:loaded?) && a.loaded? }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
class Adapter
|
||
|
extend AutoloadHelper
|
||
|
autoload_all 'faraday/adapter',
|
||
|
:NetHttp => 'net_http',
|
||
|
:NetHttpPersistent => 'net_http_persistent',
|
||
|
:Typhoeus => 'typhoeus',
|
||
|
:EMSynchrony => 'em_synchrony',
|
||
|
:EMHttp => 'em_http',
|
||
|
:Patron => 'patron',
|
||
|
:Excon => 'excon',
|
||
|
:Test => 'test',
|
||
|
:Rack => 'rack',
|
||
|
:HTTPClient => 'httpclient'
|
||
|
end
|
||
|
|
||
|
class Request
|
||
|
extend AutoloadHelper
|
||
|
autoload_all 'faraday/request',
|
||
|
:UrlEncoded => 'url_encoded',
|
||
|
:Multipart => 'multipart',
|
||
|
:Retry => 'retry',
|
||
|
:Timeout => 'timeout',
|
||
|
:Authorization => 'authorization',
|
||
|
:BasicAuthentication => 'basic_authentication',
|
||
|
:TokenAuthentication => 'token_authentication',
|
||
|
:Instrumentation => 'instrumentation'
|
||
|
end
|
||
|
|
||
|
class Response
|
||
|
extend AutoloadHelper
|
||
|
autoload_all 'faraday/response',
|
||
|
:RaiseError => 'raise_error',
|
||
|
:Logger => 'logger'
|
||
|
end
|
||
|
end
|