class Artifice::Excon::Connection
Public Class Methods
endpoints()
click to toggle source
# File lib/artifice/excon.rb, line 73 def endpoints @endpoints ||= {} end
Public Instance Methods
request_kernel(params)
click to toggle source
Calls superclass method
# File lib/artifice/excon.rb, line 78 def request_kernel(params) endpoint = self.class.endpoints[params[:host]] || self.class.endpoints[:default] return super unless endpoint rack_request = RackRequest.new(endpoint) params[:headers].each do |header, value| rack_request.header(header, value) end if params[:headers] request = "#{params[:scheme]}://#{params[:host]}:#{params[:port]}" request << params[:path] request << query_string(params[:query]) response = rack_request.request(request, { :method => params[:method], :input => params[:body] }) response = ::Excon::Response.new(:body => response.body, :headers => response.headers, :status => response.status) if params.has_key?(:expects) && ![*params[:expects]].include?(response.status) raise(::Excon::Errors.status_error(params, response)) end response end
Private Instance Methods
query_string(query)
click to toggle source
# File lib/artifice/excon.rb, line 108 def query_string(query) query_string = "" case query when String query_string << '?' << query when Hash query_string << '?' query.each do |key, values| if values.nil? query_string << key.to_s << '&' else [*values].each do |value| query_string << key.to_s << '=' << CGI.escape(value.to_s) << '&' end end end query_string.chop! # remove trailing '&' end query_string end