Method: Excon::Connection#initialize
- Defined in:
- lib/excon/connection.rb
#initialize(params = {}) ⇒ Connection
Initializes a new Connection instance
@param [Hash<Symbol, >] params One or more optional params
@option params [String] :body Default text to be sent over a socket. Only used if :body absent in Connection#request params
@option params [Hash<Symbol, String>] :headers The default headers to supply in a request. Only used if params[:headers] is not supplied to Connection#request
@option params [String] :host The destination host's reachable DNS name or IP, in the form of a String. IPv6 addresses must be wrapped (e.g. [::1]). See URI#host.
@option params [String] :hostname Same as host, but usable for socket connections. IPv6 addresses must not be wrapped (e.g. ::1). See URI#hostname.
@option params [String] :path Default path; appears after 'scheme://host:port/'. Only used if params[:path] is not supplied to Connection#request
@option params [Fixnum] :port The port on which to connect, to the destination host
@option params [Hash] :query Default query; appended to the 'scheme://host:port/path/' in the form of '?key=value'. Will only be used if params[:query] is not supplied to Connection#request
@option params [String] :scheme The protocol; 'https' causes OpenSSL to be used
@option params [String] :socket The path to the unix socket (required for 'unix://' connections)
@option params [String] :ciphers Only use the specified SSL/TLS cipher suites; use OpenSSL cipher spec format e.g. 'HIGH:!aNULL:!3DES' or 'AES256-SHA:DES-CBC3-SHA'
@option params [String] :proxy Proxy server; e.g. 'http://myproxy.com:8888'
@option params [Fixnum] :retry_limit Set how many times we'll retry a failed request. (Default 4)
@option params [Class] :instrumentor Responds to #instrument as in ActiveSupport::Notifications
@option params [String] :instrumentor_name Name prefix for #instrument events. Defaults to 'excon'
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/excon/connection.rb', line 50 def initialize(params = {}) @data = Excon.defaults.dup # merge does not deep-dup, so make sure headers is not the original @data[:headers] = @data[:headers].dup # the same goes for :middlewares @data[:middlewares] = @data[:middlewares].dup params = validate_params(:connection, params) @data.merge!(params) setup_proxy if ENV.has_key?('EXCON_STANDARD_INSTRUMENTOR') @data[:instrumentor] = Excon::StandardInstrumentor end if @data[:debug] || ENV.has_key?('EXCON_DEBUG') @data[:debug_request] = @data[:debug_response] = true @data[:instrumentor] = Excon::StandardInstrumentor end # Use Basic Auth if url contains a login if @data[:user] || @data[:password] user, pass = Utils.unescape_form(@data[:user].to_s), Utils.unescape_form(@data[:password].to_s) @data[:headers]['Authorization'] ||= 'Basic ' << ['' << user.to_s << ':' << pass.to_s].pack('m').delete(Excon::CR_NL) end @socket_key = '' << @data[:scheme] if @data[:scheme] == UNIX if @data[:host] raise ArgumentError, "The `:host` parameter should not be set for `unix://` connections.\n" + "When supplying a `unix://` URI, it should start with `unix:/` or `unix:///`." elsif !@data[:socket] raise ArgumentError, 'You must provide a `:socket` for `unix://` connections' else @socket_key << '://' << @data[:socket] end else @socket_key << '://' << @data[:host] << port_string(@data) end reset end |