in lib/logstash/outputs/amazon_es/http_client/manticore_adapter.rb [79:135]
def perform_request(url, method, path, params={}, body=nil)
params = (params || {}).merge(@client_params) { |key, oldval, newval|
(oldval.is_a?(Hash) && newval.is_a?(Hash)) ? oldval.merge(newval) : newval
}
params[:headers] = params[:headers].clone
params[:body] = body if body
if url.user
params[:auth] = {
:user => CGI.unescape(url.user),
:password => CGI.unescape(url.password),
:eager => true
}
end
request_uri = format_url(url, path)
if @protocol == "https"
url = URI::HTTPS.build({:host=>URI(request_uri.to_s).host, :port=>@port.to_s, :path=>path})
else
url = URI::HTTP.build({:host=>URI(request_uri.to_s).host, :port=>@port.to_s, :path=>path})
end
key = Seahorse::Client::Http::Request.new(options={:endpoint=>url, :http_method => method.to_s.upcase,
:headers => params[:headers],:body => params[:body]})
aws_signer = Aws::Signers::V4.new(@credentials, @service_name, @region )
signed_key = aws_signer.sign(key)
params[:headers] = params[:headers].merge(signed_key.headers)
resp = @manticore.send(method.downcase, request_uri.to_s, params)
resp.call
if resp.code < 200 || resp.code > 299 && resp.code != 404
raise ::LogStash::Outputs::AmazonElasticSearch::HttpClient::Pool::BadResponseCodeError.new(resp.code, request_uri, body, resp.body)
end
resp
end