def stub(request_params, response_params = nil)
if url = request_params.delete(:url)
uri = URI.parse(url)
request_params.update(
:host => uri.host,
:path => uri.path,
:port => uri.port.to_s,
:query => uri.query,
:scheme => uri.scheme
)
if uri.user || uri.password
request_params[:headers] ||= {}
request_params[:headers]['Authorization'] ||= 'Basic ' << ['' << uri.user.to_s << ':' << uri.password.to_s].pack('m').delete(Excon::CR_NL)
end
end
if block_given?
if response_params
raise(ArgumentError.new("stub requires either response_params OR a block"))
else
stub = [request_params, Proc.new]
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