mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-09-21 00:00:49 -04:00
These internnal registries were a bit magical to use, difficult to debug, not thread-safe, and overall a nuisance when it came to type checking. So long.
75 lines
1.8 KiB
Ruby
75 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "httpx/version"
|
|
|
|
require "httpx/extensions"
|
|
|
|
require "httpx/errors"
|
|
require "httpx/utils"
|
|
require "httpx/punycode"
|
|
require "httpx/domain_name"
|
|
require "httpx/altsvc"
|
|
require "httpx/callbacks"
|
|
require "httpx/loggable"
|
|
require "httpx/transcoder"
|
|
require "httpx/timers"
|
|
require "httpx/pool"
|
|
require "httpx/headers"
|
|
require "httpx/request"
|
|
require "httpx/response"
|
|
require "httpx/options"
|
|
require "httpx/chainable"
|
|
|
|
require "mutex_m"
|
|
# Top-Level Namespace
|
|
#
|
|
module HTTPX
|
|
EMPTY = [].freeze
|
|
|
|
# All plugins should be stored under this module/namespace. Can register and load
|
|
# plugins.
|
|
#
|
|
module Plugins
|
|
@plugins = {}
|
|
@plugins.extend(Mutex_m)
|
|
|
|
# Loads a plugin based on a name. If the plugin hasn't been loaded, tries to load
|
|
# it from the load path under "httpx/plugins/" directory.
|
|
#
|
|
def self.load_plugin(name)
|
|
h = @plugins
|
|
unless (plugin = h.synchronize { h[name] })
|
|
require "httpx/plugins/#{name}"
|
|
raise "Plugin #{name} hasn't been registered" unless (plugin = h.synchronize { h[name] })
|
|
end
|
|
plugin
|
|
end
|
|
|
|
# Registers a plugin (+mod+) in the central store indexed by +name+.
|
|
#
|
|
def self.register_plugin(name, mod)
|
|
h = @plugins
|
|
h.synchronize { h[name] = mod }
|
|
end
|
|
end
|
|
|
|
# :nocov:
|
|
def self.const_missing(const_name)
|
|
super unless const_name == :Client
|
|
warn "DEPRECATION WARNING: the class #{self}::Client is deprecated. Use #{self}::Session instead."
|
|
Session
|
|
end
|
|
# :nocov:
|
|
|
|
extend Chainable
|
|
end
|
|
|
|
require "httpx/session"
|
|
require "httpx/session_extensions"
|
|
|
|
# load integrations when possible
|
|
|
|
require "httpx/adapters/datadog" if defined?(DDTrace) || defined?(Datadog)
|
|
require "httpx/adapters/sentry" if defined?(Sentry)
|
|
require "httpx/adapters/webmock" if defined?(WebMock)
|