twitter-status-bot/.gems/gems/faraday-0.9.0/lib/faraday/autoload.rb

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