+++ /dev/null
-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