# frozen_string_literal: true require 'aws-partitions' require 'seahorse' require 'jmespath' require_relative 'aws-sdk-core/deprecations' # defaults require_relative 'aws-defaults' module Aws autoload :IniParser, 'aws-sdk-core/ini_parser' # Credentials and credentials providers autoload :Credentials, 'aws-sdk-core/credentials' autoload :CredentialProvider, 'aws-sdk-core/credential_provider' autoload :RefreshingCredentials, 'aws-sdk-core/refreshing_credentials' autoload :AssumeRoleCredentials, 'aws-sdk-core/assume_role_credentials' autoload :AssumeRoleWebIdentityCredentials, 'aws-sdk-core/assume_role_web_identity_credentials' autoload :CredentialProviderChain, 'aws-sdk-core/credential_provider_chain' autoload :ECSCredentials, 'aws-sdk-core/ecs_credentials' autoload :InstanceProfileCredentials, 'aws-sdk-core/instance_profile_credentials' autoload :SharedCredentials, 'aws-sdk-core/shared_credentials' autoload :ProcessCredentials, 'aws-sdk-core/process_credentials' autoload :SSOCredentials, 'aws-sdk-core/sso_credentials' # tokens and token providers autoload :Token, 'aws-sdk-core/token' autoload :TokenProvider, 'aws-sdk-core/token_provider' autoload :StaticTokenProvider, 'aws-sdk-core/static_token_provider' autoload :RefreshingToken, 'aws-sdk-core/refreshing_token' autoload :SSOTokenProvider, 'aws-sdk-core/sso_token_provider' autoload :TokenProviderChain, 'aws-sdk-core/token_provider_chain' # client modules autoload :ClientStubs, 'aws-sdk-core/client_stubs' autoload :AsyncClientStubs, 'aws-sdk-core/async_client_stubs' autoload :EagerLoader, 'aws-sdk-core/eager_loader' autoload :Errors, 'aws-sdk-core/errors' autoload :PageableResponse, 'aws-sdk-core/pageable_response' autoload :Pager, 'aws-sdk-core/pager' autoload :ParamConverter, 'aws-sdk-core/param_converter' autoload :ParamValidator, 'aws-sdk-core/param_validator' autoload :SharedConfig, 'aws-sdk-core/shared_config' autoload :Structure, 'aws-sdk-core/structure' autoload :EmptyStructure, 'aws-sdk-core/structure' autoload :TypeBuilder, 'aws-sdk-core/type_builder' autoload :Util, 'aws-sdk-core/util' # protocols autoload :ErrorHandler, 'aws-sdk-core/error_handler' autoload :Rest, 'aws-sdk-core/rest' autoload :Xml, 'aws-sdk-core/xml' autoload :Json, 'aws-sdk-core/json' autoload :Query, 'aws-sdk-core/query' autoload :RpcV2, 'aws-sdk-core/rpc_v2' # event stream autoload :Binary, 'aws-sdk-core/binary' autoload :EventEmitter, 'aws-sdk-core/event_emitter' # endpoint discovery autoload :EndpointCache, 'aws-sdk-core/endpoint_cache' autoload :Telemetry, 'aws-sdk-core/telemetry' # utilities autoload :ARN, 'aws-sdk-core/arn' autoload :ARNParser, 'aws-sdk-core/arn_parser' autoload :EC2Metadata, 'aws-sdk-core/ec2_metadata' autoload :LRUCache, 'aws-sdk-core/lru_cache' # dynamic endpoints autoload :Endpoints, 'aws-sdk-core/endpoints' CORE_GEM_VERSION = File.read(File.expand_path('../VERSION', __dir__)).strip @config = {} class << self # @api private def shared_config enabled = ENV["AWS_SDK_CONFIG_OPT_OUT"] ? false : true @shared_config ||= SharedConfig.new(config_enabled: enabled) end # @return [Hash] Returns a hash of default configuration options shared # by all constructed clients. attr_reader :config # @param [Hash] config def config=(config) if Hash === config @config = config else raise ArgumentError, 'configuration object must be a hash' end end # @see (Aws::Partitions.partition) def partition(partition_name) Aws::Partitions.partition(partition_name) end # @see (Aws::Partitions.partitions) def partitions Aws::Partitions.partitions end # The SDK ships with a ca certificate bundle to use when verifying SSL # peer certificates. By default, this cert bundle is *NOT* used. The # SDK will rely on the default cert available to OpenSSL. This ensures # the cert provided by your OS is used. # # For cases where the default cert is unavailable, e.g. Windows, you # can call this method. # # Aws.use_bundled_cert! # # @return [String] Returns the path to the bundled cert. def use_bundled_cert! config.delete(:ssl_ca_directory) config.delete(:ssl_ca_store) config[:ssl_ca_bundle] = File.expand_path(File.join( File.dirname(__FILE__), '..', 'ca-bundle.crt' )) end # Close any long-lived connections maintained by the SDK's internal # connection pool. # # Applications that rely heavily on the `fork()` system call on POSIX systems # should call this method in the child process directly after fork to ensure # there are no race conditions between the parent # process and its children # for the pooled TCP connections. # # Child processes that make multi-threaded calls to the SDK should block on # this call before beginning work. # # @return [nil] def empty_connection_pools! Seahorse::Client::NetHttp::ConnectionPool.pools.each do |pool| pool.empty! end end # @api private def eager_autoload!(*args) msg = 'Aws.eager_autoload is no longer needed, usage of '\ 'autoload has been replaced with require statements' warn(msg) end end end # Setup additional autoloads/modules require_relative 'aws-sdk-core/client_side_monitoring' require_relative 'aws-sdk-core/log' require_relative 'aws-sdk-core/plugins' require_relative 'aws-sdk-core/resources' require_relative 'aws-sdk-core/stubbing' require_relative 'aws-sdk-core/waiters' # aws-sdk-sts is included to support Aws::AssumeRoleCredentials require_relative 'aws-sdk-sts' # aws-sdk-sso is included to support Aws::SSOCredentials require_relative 'aws-sdk-sso' require_relative 'aws-sdk-ssooidc'