def build_request_signature(req)
uri = WebMock::Util::URI.heuristic_parse(req.header.request_uri.to_s)
uri.query_values = req.header.request_query if req.header.request_query
uri.port = req.header.request_uri.port
uri = uri.omit(:userinfo)
auth = www_auth.basic_auth
auth.challenge(req.header.request_uri, nil)
@request_filter.each do |filter|
filter.filter_request(req)
end
headers = req.header.all.inject({}) do |hdrs, header|
hdrs[header[0]] ||= []
hdrs[header[0]] << header[1]
hdrs
end
if (auth_cred = auth.get(req)) && auth.scheme == 'Basic'
userinfo = WebMock::Util::Headers.decode_userinfo_from_header(auth_cred)
userinfo = WebMock::Util::URI.encode_unsafe_chars_in_userinfo(userinfo)
headers.reject! {|k,v| k =~ /[Aa]uthorization/ && v =~ /^Basic / }
uri.userinfo = userinfo
end
WebMock::RequestSignature.new(
req.header.request_method.downcase.to_sym,
uri.to_s,
:body => req.content,
:headers => headers
)
end