X-Git-Url: https://git.donarmstrong.com/?p=dsa-puppet.git;a=blobdiff_plain;f=3rdparty%2Fmodules%2Faviator%2Ffeature%2Ffaraday%2Fautoload.rb;fp=3rdparty%2Fmodules%2Faviator%2Ffeature%2Ffaraday%2Fautoload.rb;h=ec413ff8498870995b92a2e18f39d01346477a47;hp=0000000000000000000000000000000000000000;hb=b7626cbcbb2fb8e7ce3dc5ac60e80a981175f9d3;hpb=8132e6bb1199463f5e334326659c974d4772b3e3 diff --git a/3rdparty/modules/aviator/feature/faraday/autoload.rb b/3rdparty/modules/aviator/feature/faraday/autoload.rb new file mode 100644 index 00000000..ec413ff8 --- /dev/null +++ b/3rdparty/modules/aviator/feature/faraday/autoload.rb @@ -0,0 +1,85 @@ +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