perform_request

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