class Fog::Core::Connection
Fog::Core::Connection is a generic class to contain a HTTP link to an API.
It is intended to be subclassed by providers who can then add their own modifications such as authentication or response object.
Public Class Methods
Prepares the connection and sets defaults for any future requests.
@param [String] url The destination URL @param persistent [Boolean] @param [Hash] params @option params [String] :body Default text to be sent over a socket. Only used if :body absent in #request params @option params [Hash<Symbol, String>] :headers The default headers to supply in a request. Only used if params is not supplied to #request @option params [String] :host The destination host's reachable DNS name or IP, in the form of a String @option params [String] :path Default path; appears after 'scheme://host:port/'. Only used if params is not supplied to #request @option params [String] :path_prefix Sticky version of the “path” arg. :XSpath_prefix => “foo/bar” with a request with :path => “blech” sends a request to path “foo/bar/blech” @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 is not supplied to #request @option params [String] :scheme The protocol; 'https' causes OpenSSL to be used @option params [String] :proxy Proxy server; e.g. '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'
# File lib/fog/core/connection.rb, line 26 def initialize(url, persistent = false, params = {}) if params[:path_prefix] if params[:path] raise ArgumentError, "optional arg 'path' is invalid when 'path_prefix' is provided" end @path_prefix = params.delete(:path_prefix) end params[:debug_response] = true unless params.key?(:debug_response) params[:headers] ||= {} user_agent = "fog-core/#{Fog::Core::VERSION}" user_agent = "fog/#{Fog::VERSION} #{user_agent}" if defined?(Fog::VERSION) params[:headers]["User-Agent"] ||= user_agent params.merge!(:persistent => params.fetch(:persistent, persistent)) @excon = Excon.new(url, params) end
Public Instance Methods
Makes a request using the connection using Excon
@param [Hash] params @option params [String] :body text to be sent over a socket @option params [Hash<Symbol, String>] :headers The default headers to supply in a request @option params [String] :host The destination host's reachable DNS name or IP, in the form of a String @option params [String] :path appears after 'scheme://host:port/' @option params [Fixnum] :port The port on which to connect, to the destination host @option params [Hash] :query appended to the 'scheme://host:port/path/' in the form of '?key=value' @option params [String] :scheme The protocol; 'https' causes OpenSSL to be used @option params [Proc] :response_block
@return [Excon::Response]
@raise [Excon::Errors::StubNotFound] @raise [Excon::Errors::Timeout] @raise [Excon::Errors::SocketError]
# File lib/fog/core/connection.rb, line 62 def request(params, &block) @excon.request(handle_path_prefix_for(params), &block) end
Closes the connection
# File lib/fog/core/connection.rb, line 74 def reset @excon.reset end
Protected Instance Methods
Make {#request} available even when it has been overidden by a subclass to allow backwards compatibility.
Private Instance Methods
# File lib/fog/core/connection.rb, line 80 def handle_path_prefix_for(params) return params unless @path_prefix params[:path] = params[:path].sub(/^\//, "") params[:path] = "#{@path_prefix}/#{params[:path]}" params end