module Excon
def stub(request_params = {}, response_params = nil, &block)
-
response_params
(Hash
) -- response params to return from matched request or block to call with params -
request_params
(Hash
) -- request params to match against, omitted params match all
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, :port => uri.port, :query => uri.query, :scheme => uri.scheme }.merge!(request_params) if uri.user || uri.password request_params[:headers] ||= {} user, pass = Utils.unescape_form(uri.user.to_s), 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.has_key?(:headers) headers = Excon::Headers.new request_params[:headers].each do |key, value| headers[key] = value end request_params[:headers] = headers end if block_given? if response_params raise(ArgumentError.new("stub requires either response_params OR a block")) else stub = [request_params, block] end elsif response_params stub = [request_params, response_params] else raise(ArgumentError.new("stub requires either response_params OR a block")) end stubs.unshift(stub) stub end