module Excon
Define defaults first so they will be available to other files
Constants
- CHUNK_SIZE
-
avoid overwrite if somebody has redefined
- CR_NL
- DEFAULTS
-
these come last as they rely on the above
- DEFAULT_CA_FILE
- DEFAULT_CHUNK_SIZE
- DEFAULT_REDIRECT_LIMIT
- DEFAULT_RETRY_ERRORS
- DEFAULT_RETRY_LIMIT
- DEPRECATED_VALID_REQUEST_KEYS
- FORCE_ENC
- HTTPS
- HTTP_1_1
- HTTP_VERBS
- NO_ENTITY
- REDACTED
- UNIX
- USER_AGENT
- VALID_CONNECTION_KEYS
- VALID_REQUEST_KEYS
- VERSION
- VERSIONS
Attributes
Public Class Methods
Source
# File lib/excon.rb, line 50 def defaults @defaults ||= DEFAULTS end
@return [Hash] defaults for Excon
connections
Source
# File lib/excon.rb, line 58 def display_warning(warning) # Show warning if $VERBOSE or ENV['EXCON_DEBUG'] is set ($VERBOSE || ENV['EXCON_DEBUG']) && Warning.warn("[excon][WARNING] #{warning}\n#{caller.join("\n")}") return unless @raise_on_warnings raise(Error::Warning, warning) end
Source
# File lib/excon.rb, line 72 def mock display_warning('Excon#mock is deprecated, use Excon.defaults[:mock] instead.') self.defaults[:mock] end
Status of mocking
Source
# File lib/excon.rb, line 80 def mock=(new_mock) display_warning('Excon#mock is deprecated, use Excon.defaults[:mock]= instead.') self.defaults[:mock] = new_mock end
Change the status of mocking false is the default and works as expected true returns a value from stubs or raises
Source
# File lib/excon.rb, line 116 def new(url, params = {}) uri_parser = params[:uri_parser] || defaults[:uri_parser] uri = uri_parser.parse(url) params[:path] && uri_parser.parse(params[:path]) raise(ArgumentError, "Invalid URI: #{uri}") unless uri.scheme params = { host: uri.host, hostname: uri.hostname, path: uri.path, port: uri.port, query: uri.query, scheme: uri.scheme }.merge(params) uri.password && params[:password] = Utils.unescape_uri(uri.password) uri.user && params[:user] = Utils.unescape_uri(uri.user) Excon::Connection.new(params) end
@see Connection#initialize Initializes a new keep-alive session for a given remote host @param [String] url The destination URL @param [Hash<Symbol, >] params One or more option params to set on the Connection
instance @return [Connection] A new Excon::Connection
instance
Source
# File lib/excon.rb, line 67 def set_raise_on_warnings!(should_raise) @raise_on_warnings = should_raise end
Source
# File lib/excon.rb, line 86 def ssl_ca_path display_warning('Excon#ssl_ca_path is deprecated, use Excon.defaults[:ssl_ca_path] instead.') self.defaults[:ssl_ca_path] end
@return [String] The filesystem path to the SSL Certificate Authority
Source
# File lib/excon.rb, line 93 def ssl_ca_path=(new_ssl_ca_path) display_warning('Excon#ssl_ca_path= is deprecated, use Excon.defaults[:ssl_ca_path]= instead.') self.defaults[:ssl_ca_path] = new_ssl_ca_path end
Change path to the SSL Certificate Authority @return [String] The filesystem path to the SSL Certificate Authority
Source
# File lib/excon.rb, line 99 def ssl_verify_peer display_warning('Excon#ssl_verify_peer is deprecated, use Excon.defaults[:ssl_verify_peer] instead.') self.defaults[:ssl_verify_peer] end
@return [true, false] Whether or not to verify the peer’s SSL certificate / chain
Source
# File lib/excon.rb, line 106 def ssl_verify_peer=(new_ssl_verify_peer) display_warning('Excon#ssl_verify_peer= is deprecated, use Excon.defaults[:ssl_verify_peer]= instead.') self.defaults[:ssl_verify_peer] = new_ssl_verify_peer end
Change the status of ssl peer verification @see Excon#ssl_verify_peer (attr_reader)
Source
# File lib/excon.rb, line 138 def stub(request_params = {}, response_params = nil, &block) if (method = request_params.delete(:method)) request_params[:method] = method.to_s.downcase.to_sym end if (url = request_params.delete(:url)) uri = URI.parse(url) request_params = { host: uri.host, path: uri.path.empty? ? '/' : uri.path, port: uri.port, query: uri.query, scheme: uri.scheme }.merge!(request_params) if uri.user || uri.password request_params[:headers] ||= {} user = Utils.unescape_form(uri.user.to_s) pass = Utils.unescape_form(uri.password.to_s) request_params[:headers]['Authorization'] ||= 'Basic ' + ["#{user}:#{pass}"].pack('m').delete(Excon::CR_NL) end end if request_params.key?(:headers) headers = Excon::Headers.new request_params[:headers].each do |key, value| headers[key] = value end request_params[:headers] = headers end request_params[:query] = Utils.query_string(request_params)[1...] if request_params.key?(:query) if block_given? raise(ArgumentError, 'stub requires either response_params OR a block') if response_params stub = [request_params, block] elsif response_params stub = [request_params, response_params] else raise(ArgumentError, 'stub requires either response_params OR a block') end stubs.unshift(stub) stub end
push an additional stub onto the list to check for mock requests @param request_params [Hash<Symbol, >] request params to match against, omitted params match all @param response_params [Hash<Symbol, >] response params to return or block to call with matched params
Source
# File lib/excon.rb, line 182 def stub_for(request_params={}) if (method = request_params.delete(:method)) request_params[:method] = method.to_s.downcase.to_sym end request_params[:query] = Utils.query_string(request_params)[1...] if request_params.key?(:query) Excon.stubs.each do |stub, response_params| captures = { headers: {} } headers_match = !stub.key?(:headers) || stub[:headers].keys.all? do |key| case value = stub[:headers][key] when Regexp case request_params[:headers][key] when String if (match = value.match(request_params[:headers][key])) captures[:headers][key] = match.captures end when Regexp # for unstub on regex params match = (value == request_params[:headers][key]) end match else value == request_params[:headers][key] end end non_headers_match = (stub.keys - [:headers]).all? do |key| case value = stub[key] when Regexp case request_params[key] when String if (match = value.match(request_params[key])) captures[key] = match.captures end when Regexp # for unstub on regex params match = (value == request_params[key]) end match else value == request_params[key] end end if headers_match && non_headers_match request_params[:captures] = captures return [stub, response_params] end end nil end
get a stub matching params or nil @param request_params [Hash<Symbol, >] request params to match against, omitted params match all @return [Hash<Symbol, >] response params to return from matched request or block to call with params
Source
# File lib/excon.rb, line 230 def stubs case Excon.defaults[:stubs] when :global @stubs ||= [] when :local Thread.current[:_excon_stubs] ||= [] end end
get a list of defined stubs
Source
# File lib/excon.rb, line 242 def unstub(request_params = {}) return unless (stub = stub_for(request_params)) Excon.stubs.delete_at(Excon.stubs.index(stub)) end
remove first/oldest stub matching request_params or nil if none match @param request_params [Hash<Symbol, >] request params to match against, omitted params match all @return [Hash<Symbol, >] response params from deleted stub