Method: Gem::Net::HTTP::Persistent#request

Defined in:
lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb

#request(uri, req = nil, &block) ⇒ Object

Makes a request on uri. If req is nil a Gem::Net::HTTP::Get is performed against uri.

If a block is passed #request behaves like Gem::Net::HTTP#request (the body of the response will not have been read).

req must be a Gem::Net::HTTPGenericRequest subclass (see Gem::Net::HTTP for a list).



893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
# File 'lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb', line 893

def request uri, req = nil, &block
  uri      = Gem::URI uri
  req      = request_setup req || uri
  response = nil

  connection_for uri do |connection|
    http = connection.http

    begin
      connection.requests += 1

      response = http.request req, &block

      if req.connection_close? or
        (response.http_version <= '1.0' and
          not response.connection_keep_alive?) or
          response.connection_close? then
        finish connection
      end
    rescue Exception # make sure to close the connection when it was interrupted
      finish connection

      raise
    ensure
      connection.last_use = Time.now
    end
  end

  @http_versions["#{uri.hostname}:#{uri.port}"] ||= response.http_version

  response
end