Class: Gem::Net::HTTP
- Defined in:
- lib/rubygems/vendor/net-http/lib/net/http.rb,
lib/rubygems/vendor/net-http/lib/net/http/backward.rb
Overview
:enddoc:
Defined Under Namespace
Modules: ProxyDelta Classes: Copy, Delete, Get, Head, Lock, Mkcol, Move, Options, Patch, Post, Propfind, Proppatch, Put, Trace, Unlock
Constant Summary collapse
- VERSION =
:stopdoc:
"0.4.1"
- HTTPVersion =
'1.1'
- SSL_IVNAMES =
[ :@ca_file, :@ca_path, :@cert, :@cert_store, :@ciphers, :@extra_chain_cert, :@key, :@ssl_timeout, :@ssl_version, :@min_version, :@max_version, :@verify_callback, :@verify_depth, :@verify_mode, :@verify_hostname, ]
- SSL_ATTRIBUTES =
:nodoc:
[ :ca_file, :ca_path, :cert, :cert_store, :ciphers, :extra_chain_cert, :key, :ssl_timeout, :ssl_version, :min_version, :max_version, :verify_callback, :verify_depth, :verify_mode, :verify_hostname, ]
- STATUS_CODES =
{ 100 => 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 103 => 'Early Hints', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-Status', 208 => 'Already Reported', 226 => 'IM Used', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary Redirect', 308 => 'Permanent Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Content Too Large', 414 => 'URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Range Not Satisfiable', 417 => 'Expectation Failed', 421 => 'Misdirected Request', 422 => 'Unprocessable Content', 423 => 'Locked', 424 => 'Failed Dependency', 425 => 'Too Early', 426 => 'Upgrade Required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 451 => 'Unavailable For Legal Reasons', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 506 => 'Variant Also Negotiates', 507 => 'Insufficient Storage', 508 => 'Loop Detected', 510 => 'Not Extended (OBSOLETED)', 511 => 'Network Authentication Required', }
- ProxyMod =
ProxyDelta
Class Attribute Summary collapse
-
.proxy_address ⇒ Object
readonly
Returns the address of the proxy host, or
nil
if none; see Gem::Net::HTTP@Proxy+Server. -
.proxy_pass ⇒ Object
readonly
Returns the password for accessing the proxy, or
nil
if none; see Gem::Net::HTTP@Proxy+Server. -
.proxy_port ⇒ Object
readonly
Returns the port number of the proxy host, or
nil
if none; see Gem::Net::HTTP@Proxy+Server. -
.proxy_user ⇒ Object
readonly
Returns the user name for accessing the proxy, or
nil
if none; see Gem::Net::HTTP@Proxy+Server.
Instance Attribute Summary collapse
-
#address ⇒ Object
readonly
Returns the string host name or host IP given as argument
address
in ::new. -
#ca_file ⇒ Object
Sets or returns the path to a CA certification file in PEM format.
-
#ca_path ⇒ Object
Sets or returns the path of to CA directory containing certification files in PEM format.
-
#cert ⇒ Object
Sets or returns the OpenSSL::X509::Certificate object to be used for client certification.
-
#cert_store ⇒ Object
Sets or returns the X509::Store to be used for verifying peer certificate.
-
#ciphers ⇒ Object
Sets or returns the available SSL ciphers.
-
#close_on_empty_response ⇒ Object
Sets or returns whether to close the connection when the response is empty; initially
false
. -
#continue_timeout ⇒ Object
Returns the continue timeout value; see continue_timeout=.
-
#extra_chain_cert ⇒ Object
Sets or returns the extra X509 certificates to be added to the certificate chain.
-
#ignore_eof ⇒ Object
Sets or returns whether to ignore end-of-file when reading a response body with
Content-Length
headers; initiallytrue
. -
#keep_alive_timeout ⇒ Object
Sets or returns the numeric (Integer or Float) number of seconds to keep the connection open after a request is sent; initially 2.
-
#key ⇒ Object
Sets or returns the OpenSSL::PKey::RSA or OpenSSL::PKey::DSA object.
-
#local_host ⇒ Object
Sets or returns the string local host used to establish the connection; initially
nil
. -
#local_port ⇒ Object
Sets or returns the integer local port used to establish the connection; initially
nil
. -
#max_retries ⇒ Object
Returns the maximum number of times to retry an idempotent request; see #max_retries=.
-
#max_version ⇒ Object
Sets or returns the maximum SSL version.
-
#min_version ⇒ Object
Sets or returns the minimum SSL version.
-
#open_timeout ⇒ Object
Sets or returns the numeric (Integer or Float) number of seconds to wait for a connection to open; initially 60.
-
#port ⇒ Object
readonly
Returns the integer port number given as argument
port
in ::new. -
#proxy_address ⇒ Object
(also: #proxyaddr)
Returns the address of the proxy server, if defined,
nil
otherwise; see Proxy Server. -
#proxy_from_env ⇒ Object
writeonly
Sets whether to determine the proxy from environment variable ‘
ENV['http_proxy']
’; see Proxy Using ENV[‘http_proxy’]. -
#proxy_pass ⇒ Object
Returns the password of the proxy server, if defined,
nil
otherwise; see Proxy Server. -
#proxy_port ⇒ Object
(also: #proxyport)
Returns the port number of the proxy server, if defined,
nil
otherwise; see Proxy Server. -
#proxy_user ⇒ Object
Returns the user name of the proxy server, if defined,
nil
otherwise; see Proxy Server. -
#read_timeout ⇒ Object
Returns the numeric (Integer or Float) number of seconds to wait for one block to be read (via one read(2) call); see #read_timeout=.
-
#response_body_encoding ⇒ Object
Returns the encoding to use for the response body; see #response_body_encoding=.
-
#ssl_timeout ⇒ Object
Sets or returns the SSL timeout seconds.
-
#ssl_version ⇒ Object
Sets or returns the SSL version.
-
#verify_callback ⇒ Object
Sets or returns the callback for the server certification verification.
-
#verify_depth ⇒ Object
Sets or returns the maximum depth for the certificate chain verification.
-
#verify_hostname ⇒ Object
Sets or returns whether to verify that the server certificate is valid for the hostname.
-
#verify_mode ⇒ Object
Sets or returns the flags for server the certification verification at the beginning of the SSL/TLS session.
-
#write_timeout ⇒ Object
Returns the numeric (Integer or Float) number of seconds to wait for one block to be written (via one write(2) call); see #write_timeout=.
Class Method Summary collapse
-
.default_port ⇒ Object
Returns integer
80
, the default port to use for HTTP requests:. -
.get(uri_or_host, path_or_headers = nil, port = nil) ⇒ Object
:call-seq: Gem::Net::HTTP.get(hostname, path, port = 80) -> body Gem::Net::HTTP:get(uri, headers = {}, port = uri.port) -> body.
-
.get_print(uri_or_host, path_or_headers = nil, port = nil) ⇒ Object
:call-seq: Gem::Net::HTTP.get_print(hostname, path, port = 80) -> nil Gem::Net::HTTP:get_print(uri, headers = {}, port = uri.port) -> nil.
-
.get_response(uri_or_host, path_or_headers = nil, port = nil, &block) ⇒ Object
:call-seq: Gem::Net::HTTP.get_response(hostname, path, port = 80) -> http_response Gem::Net::HTTP:get_response(uri, headers = {}, port = uri.port) -> http_response.
-
.http_default_port ⇒ Object
Returns integer
80
, the default port to use for HTTP requests:. -
.https_default_port ⇒ Object
Returns integer
443
, the default port to use for HTTPS requests:. -
.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_no_proxy = nil) ⇒ Object
Returns a new Gem::Net::HTTP object
http
(but does not open a TCP connection or HTTP session). -
.newobj ⇒ Object
:nodoc:.
-
.post(url, data, header = nil) ⇒ Object
Posts data to a host; returns a Gem::Net::HTTPResponse object.
-
.post_form(url, params) ⇒ Object
Posts data to a host; returns a Gem::Net::HTTPResponse object.
-
.Proxy(p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil) ⇒ Object
Creates an HTTP proxy class which behaves like Gem::Net::HTTP, but performs all access via the specified proxy.
-
.proxy_class? ⇒ Boolean
Returns true if self is a class which was created by HTTP::Proxy.
-
.socket_type ⇒ Object
:nodoc: obsolete.
-
.start(address, *arg, &block) ⇒ Object
:call-seq: HTTP.start(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, opts) -> http HTTP.start(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, opts) {|http| … } -> object.
-
.version_1_1? ⇒ Boolean
(also: is_version_1_1?)
Returns
false
; retained for compatibility. -
.version_1_2 ⇒ Object
Returns
true
; retained for compatibility. -
.version_1_2? ⇒ Boolean
(also: is_version_1_2?)
Returns
true
; retained for compatibility.
Instance Method Summary collapse
-
#copy(path, initheader = nil) ⇒ Object
Sends a COPY request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#delete(path, initheader = {'Depth' => 'Infinity'}) ⇒ Object
Sends a DELETE request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#finish ⇒ Object
Finishes the HTTP session:.
-
#get(path, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq: get(path, initheader = nil) {|res| … }.
-
#head(path, initheader = nil) ⇒ Object
Sends a HEAD request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#initialize(address, port = nil) ⇒ HTTP
constructor
Creates a new Gem::Net::HTTP object for the specified server address, without opening the TCP connection or initializing the HTTP session.
-
#inspect ⇒ Object
Returns a string representation of
self
:. -
#ipaddr ⇒ Object
Returns the IP address for the connection.
-
#ipaddr=(addr) ⇒ Object
Sets the IP address for the connection:.
-
#lock(path, body, initheader = nil) ⇒ Object
Sends a LOCK request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#mkcol(path, body = nil, initheader = nil) ⇒ Object
Sends a MKCOL request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#move(path, initheader = nil) ⇒ Object
Sends a MOVE request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#options(path, initheader = nil) ⇒ Object
Sends an Options request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#patch(path, data, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq: patch(path, data, initheader = nil) {|res| … }.
-
#peer_cert ⇒ Object
Returns the X509 certificate chain (an array of strings) for the session’s socket peer, or
nil
if none. -
#post(path, data, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq: post(path, data, initheader = nil) {|res| … }.
-
#propfind(path, body = nil, initheader = {'Depth' => '0'}) ⇒ Object
Sends a PROPFIND request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#proppatch(path, body, initheader = nil) ⇒ Object
Sends a PROPPATCH request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#proxy? ⇒ Boolean
Returns
true
if a proxy server is defined,false
otherwise; see Proxy Server. -
#proxy_from_env? ⇒ Boolean
Returns
true
if the proxy server is defined in the environment,false
otherwise; see Proxy Server. -
#proxy_uri ⇒ Object
The proxy URI determined from the environment for this connection.
-
#put(path, data, initheader = nil) ⇒ Object
Sends a PUT request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#request(req, body = nil, &block) ⇒ Object
Sends the given request
req
to the server; forms the response into a Gem::Net::HTTPResponse object. -
#request_get(path, initheader = nil, &block) ⇒ Object
(also: #get2)
Sends a GET request to the server; forms the response into a Gem::Net::HTTPResponse object.
-
#request_head(path, initheader = nil, &block) ⇒ Object
(also: #head2)
Sends a HEAD request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#request_post(path, data, initheader = nil, &block) ⇒ Object
(also: #post2)
Sends a POST request to the server; forms the response into a Gem::Net::HTTPResponse object.
-
#request_put(path, data, initheader = nil, &block) ⇒ Object
(also: #put2)
Sends a PUT request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#send_request(name, path, data = nil, header = nil) ⇒ Object
Sends an HTTP request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#set_debug_output(output) ⇒ Object
WARNING This method opens a serious security hole.
-
#start ⇒ Object
Starts an HTTP session.
-
#started? ⇒ Boolean
(also: #active?)
Returns
true
if the HTTP session has been started:. -
#trace(path, initheader = nil) ⇒ Object
Sends a TRACE request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#unlock(path, body, initheader = nil) ⇒ Object
Sends an UNLOCK request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
-
#use_ssl=(flag) ⇒ Object
Sets whether a new session is to use Transport Layer Security:.
-
#use_ssl? ⇒ Boolean
Returns
true
ifself
uses SSL,false
otherwise.
Constructor Details
#initialize(address, port = nil) ⇒ HTTP
Creates a new Gem::Net::HTTP object for the specified server address, without opening the TCP connection or initializing the HTTP session. The address
should be a DNS hostname or IP address.
1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1093 def initialize(address, port = nil) # :nodoc: @address = address @port = (port || HTTP.default_port) @ipaddr = nil @local_host = nil @local_port = nil @curr_http_version = HTTPVersion @keep_alive_timeout = 2 @last_communicated = nil @close_on_empty_response = false @socket = nil @started = false @open_timeout = 60 @read_timeout = 60 @write_timeout = 60 @continue_timeout = nil @max_retries = 1 @debug_output = nil @response_body_encoding = false @ignore_eof = true @proxy_from_env = false @proxy_uri = nil @proxy_address = nil @proxy_port = nil @proxy_user = nil @proxy_pass = nil @use_ssl = false @ssl_context = nil @ssl_session = nil @sspi_enabled = false SSL_IVNAMES.each do |ivname| instance_variable_set ivname, nil end end |
Class Attribute Details
.proxy_address ⇒ Object (readonly)
Returns the address of the proxy host, or nil
if none; see Gem::Net::HTTP@Proxy+Server.
1768 1769 1770 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1768 def proxy_address @proxy_address end |
.proxy_pass ⇒ Object (readonly)
Returns the password for accessing the proxy, or nil
if none; see Gem::Net::HTTP@Proxy+Server.
1780 1781 1782 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1780 def proxy_pass @proxy_pass end |
.proxy_port ⇒ Object (readonly)
Returns the port number of the proxy host, or nil
if none; see Gem::Net::HTTP@Proxy+Server.
1772 1773 1774 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1772 def proxy_port @proxy_port end |
.proxy_user ⇒ Object (readonly)
Returns the user name for accessing the proxy, or nil
if none; see Gem::Net::HTTP@Proxy+Server.
1776 1777 1778 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1776 def proxy_user @proxy_user end |
Instance Attribute Details
#address ⇒ Object (readonly)
Returns the string host name or host IP given as argument address
in ::new.
1194 1195 1196 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1194 def address @address end |
#ca_file ⇒ Object
Sets or returns the path to a CA certification file in PEM format.
1479 1480 1481 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1479 def ca_file @ca_file end |
#ca_path ⇒ Object
Sets or returns the path of to CA directory containing certification files in PEM format.
1483 1484 1485 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1483 def ca_path @ca_path end |
#cert ⇒ Object
Sets or returns the OpenSSL::X509::Certificate object to be used for client certification.
1487 1488 1489 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1487 def cert @cert end |
#cert_store ⇒ Object
Sets or returns the X509::Store to be used for verifying peer certificate.
1490 1491 1492 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1490 def cert_store @cert_store end |
#ciphers ⇒ Object
Sets or returns the available SSL ciphers. See OpenSSL::SSL::SSLContext#ciphers=.
1494 1495 1496 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1494 def ciphers @ciphers end |
#close_on_empty_response ⇒ Object
Sets or returns whether to close the connection when the response is empty; initially false
.
1421 1422 1423 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1421 def close_on_empty_response @close_on_empty_response end |
#continue_timeout ⇒ Object
Returns the continue timeout value; see continue_timeout=.
1374 1375 1376 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1374 def continue_timeout @continue_timeout end |
#extra_chain_cert ⇒ Object
Sets or returns the extra X509 certificates to be added to the certificate chain. See OpenSSL::SSL::SSLContext#add_certificate.
1498 1499 1500 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1498 def extra_chain_cert @extra_chain_cert end |
#ignore_eof ⇒ Object
Sets or returns whether to ignore end-of-file when reading a response body with Content-Length
headers; initially true
.
1397 1398 1399 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1397 def ignore_eof @ignore_eof end |
#keep_alive_timeout ⇒ Object
Sets or returns the numeric (Integer or Float) number of seconds to keep the connection open after a request is sent; initially 2. If a new request is made during the given interval, the still-open connection is used; otherwise the connection will have been closed and a new connection is opened.
1392 1393 1394 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1392 def keep_alive_timeout @keep_alive_timeout end |
#key ⇒ Object
Sets or returns the OpenSSL::PKey::RSA or OpenSSL::PKey::DSA object.
1501 1502 1503 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1501 def key @key end |
#local_host ⇒ Object
Sets or returns the string local host used to establish the connection; initially nil
.
1201 1202 1203 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1201 def local_host @local_host end |
#local_port ⇒ Object
Sets or returns the integer local port used to establish the connection; initially nil
.
1205 1206 1207 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1205 def local_port @local_port end |
#max_retries ⇒ Object
Returns the maximum number of times to retry an idempotent request; see #max_retries=.
1330 1331 1332 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1330 def max_retries @max_retries end |
#max_version ⇒ Object
Sets or returns the maximum SSL version. See OpenSSL::SSL::SSLContext#max_version=.
1516 1517 1518 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1516 def max_version @max_version end |
#min_version ⇒ Object
Sets or returns the minimum SSL version. See OpenSSL::SSL::SSLContext#min_version=.
1512 1513 1514 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1512 def min_version @min_version end |
#open_timeout ⇒ Object
Sets or returns the numeric (Integer or Float) number of seconds to wait for a connection to open; initially 60. If the connection is not made in the given interval, an exception is raised.
1296 1297 1298 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1296 def open_timeout @open_timeout end |
#port ⇒ Object (readonly)
Returns the integer port number given as argument port
in ::new.
1197 1198 1199 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1197 def port @port end |
#proxy_address ⇒ Object Also known as: proxyaddr
Returns the address of the proxy server, if defined, nil
otherwise; see Proxy Server.
1807 1808 1809 1810 1811 1812 1813 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1807 def proxy_address if @proxy_from_env then proxy_uri&.hostname else @proxy_address end end |
#proxy_from_env=(value) ⇒ Object (writeonly)
Sets whether to determine the proxy from environment variable ‘ENV['http_proxy']
’; see Proxy Using ENV[‘http_proxy’].
1237 1238 1239 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1237 def proxy_from_env=(value) @proxy_from_env = value end |
#proxy_pass ⇒ Object
Returns the password of the proxy server, if defined, nil
otherwise; see Proxy Server.
1838 1839 1840 1841 1842 1843 1844 1845 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1838 def proxy_pass if @proxy_from_env pass = proxy_uri&.password unescape(pass) if pass else @proxy_pass end end |
#proxy_port ⇒ Object Also known as: proxyport
Returns the port number of the proxy server, if defined, nil
otherwise; see Proxy Server.
1817 1818 1819 1820 1821 1822 1823 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1817 def proxy_port if @proxy_from_env then proxy_uri&.port else @proxy_port end end |
#proxy_user ⇒ Object
Returns the user name of the proxy server, if defined, nil
otherwise; see Proxy Server.
1827 1828 1829 1830 1831 1832 1833 1834 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1827 def proxy_user if @proxy_from_env user = proxy_uri&.user unescape(user) if user else @proxy_user end end |
#read_timeout ⇒ Object
Returns the numeric (Integer or Float) number of seconds to wait for one block to be read (via one read(2) call); see #read_timeout=.
1301 1302 1303 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1301 def read_timeout @read_timeout end |
#response_body_encoding ⇒ Object
Returns the encoding to use for the response body; see #response_body_encoding=.
1209 1210 1211 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1209 def response_body_encoding @response_body_encoding end |
#ssl_timeout ⇒ Object
Sets or returns the SSL timeout seconds.
1504 1505 1506 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1504 def ssl_timeout @ssl_timeout end |
#ssl_version ⇒ Object
Sets or returns the SSL version. See OpenSSL::SSL::SSLContext#ssl_version=.
1508 1509 1510 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1508 def ssl_version @ssl_version end |
#verify_callback ⇒ Object
Sets or returns the callback for the server certification verification.
1519 1520 1521 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1519 def verify_callback @verify_callback end |
#verify_depth ⇒ Object
Sets or returns the maximum depth for the certificate chain verification.
1522 1523 1524 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1522 def verify_depth @verify_depth end |
#verify_hostname ⇒ Object
Sets or returns whether to verify that the server certificate is valid for the hostname. See OpenSSL::SSL::SSLContext#verify_hostname=.
1532 1533 1534 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1532 def verify_hostname @verify_hostname end |
#verify_mode ⇒ Object
Sets or returns the flags for server the certification verification at the beginning of the SSL/TLS session. OpenSSL::SSL::VERIFY_NONE or OpenSSL::SSL::VERIFY_PEER are acceptable.
1527 1528 1529 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1527 def verify_mode @verify_mode end |
#write_timeout ⇒ Object
Returns the numeric (Integer or Float) number of seconds to wait for one block to be written (via one write(2) call); see #write_timeout=.
1306 1307 1308 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1306 def write_timeout @write_timeout end |
Class Method Details
.default_port ⇒ Object
900 901 902 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 900 def HTTP.default_port http_default_port() end |
.get(uri_or_host, path_or_headers = nil, port = nil) ⇒ Object
:call-seq:
Gem::Net::HTTP.get(hostname, path, port = 80) -> body
Gem::Net::HTTP:get(uri, headers = {}, port = uri.port) -> body
Sends a GET request and returns the HTTP response body as a string.
With string arguments hostname
and path
:
hostname = 'jsonplaceholder.typicode.com'
path = '/todos/1'
puts Gem::Net::HTTP.get(hostname, path)
Output:
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
With URI object uri
and optional hash argument headers
:
uri = Gem::URI('https://jsonplaceholder.typicode.com/todos/1')
headers = {'Content-type' => 'application/json; charset=UTF-8'}
Gem::Net::HTTP.get(uri, headers)
Related:
-
Gem::Net::HTTP::Get: request class for HTTP method
GET
. -
Gem::Net::HTTP#get: convenience method for HTTP method
GET
.
802 803 804 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 802 def HTTP.get(uri_or_host, path_or_headers = nil, port = nil) get_response(uri_or_host, path_or_headers, port).body end |
.get_print(uri_or_host, path_or_headers = nil, port = nil) ⇒ Object
:call-seq:
Gem::Net::HTTP.get_print(hostname, path, port = 80) -> nil
Gem::Net::HTTP:get_print(uri, headers = {}, port = uri.port) -> nil
Like Gem::Net::HTTP.get, but writes the returned body to $stdout; returns nil
.
761 762 763 764 765 766 767 768 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 761 def HTTP.get_print(uri_or_host, path_or_headers = nil, port = nil) get_response(uri_or_host, path_or_headers, port) {|res| res.read_body do |chunk| $stdout.print chunk end } nil end |
.get_response(uri_or_host, path_or_headers = nil, port = nil, &block) ⇒ Object
:call-seq:
Gem::Net::HTTP.get_response(hostname, path, port = 80) -> http_response
Gem::Net::HTTP:get_response(uri, headers = {}, port = uri.port) -> http_response
Like Gem::Net::HTTP.get, but returns a Gem::Net::HTTPResponse object instead of the body string.
812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 812 def HTTP.get_response(uri_or_host, path_or_headers = nil, port = nil, &block) if path_or_headers && !path_or_headers.is_a?(Hash) host = uri_or_host path = path_or_headers new(host, port || HTTP.default_port).start {|http| return http.request_get(path, &block) } else uri = uri_or_host headers = path_or_headers start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') {|http| return http.request_get(uri, headers, &block) } end end |
.http_default_port ⇒ Object
908 909 910 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 908 def HTTP.http_default_port 80 end |
.https_default_port ⇒ Object
916 917 918 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 916 def HTTP.https_default_port 443 end |
.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_no_proxy = nil) ⇒ Object
Returns a new Gem::Net::HTTP object http
(but does not open a TCP connection or HTTP session).
With only string argument address
given (and ENV['http_proxy']
undefined or nil
), the returned http
:
-
Has the given address.
-
Has the default port number, Gem::Net::HTTP.default_port (80).
-
Has no proxy.
Example:
http = Gem::Net::HTTP.new(hostname)
# => #<Gem::Net::HTTP jsonplaceholder.typicode.com:80 open=false>
http.address # => "jsonplaceholder.typicode.com"
http.port # => 80
http.proxy? # => false
With integer argument port
also given, the returned http
has the given port:
http = Gem::Net::HTTP.new(hostname, 8000)
# => #<Gem::Net::HTTP jsonplaceholder.typicode.com:8000 open=false>
http.port # => 8000
For proxy-defining arguments p_addr
through p_no_proxy
, see Proxy Server.
1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1065 def HTTP.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_no_proxy = nil) http = super address, port if proxy_class? then # from Gem::Net::HTTP::Proxy() http.proxy_from_env = @proxy_from_env http.proxy_address = @proxy_address http.proxy_port = @proxy_port http.proxy_user = @proxy_user http.proxy_pass = @proxy_pass elsif p_addr == :ENV then http.proxy_from_env = true else if p_addr && p_no_proxy && !Gem::URI::Generic.use_proxy?(address, address, port, p_no_proxy) p_addr = nil p_port = nil end http.proxy_address = p_addr http.proxy_port = p_port || default_port http.proxy_user = p_user http.proxy_pass = p_pass end http end |
.newobj ⇒ Object
:nodoc:
1033 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1033 alias newobj new |
.post(url, data, header = nil) ⇒ Object
Posts data to a host; returns a Gem::Net::HTTPResponse object.
Argument url
must be a URL; argument data
must be a string:
_uri = uri.dup
_uri.path = '/posts'
data = '{"title": "foo", "body": "bar", "userId": 1}'
headers = {'content-type': 'application/json'}
res = Gem::Net::HTTP.post(_uri, data, headers) # => #<Gem::Net::HTTPCreated 201 Created readbody=true>
puts res.body
Output:
{
"title": "foo",
"body": "bar",
"userId": 1,
"id": 101
}
Related:
-
Gem::Net::HTTP::Post: request class for HTTP method
POST
. -
Gem::Net::HTTP#post: convenience method for HTTP method
POST
.
855 856 857 858 859 860 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 855 def HTTP.post(url, data, header = nil) start(url.hostname, url.port, :use_ssl => url.scheme == 'https' ) {|http| http.post(url, data, header) } end |
.post_form(url, params) ⇒ Object
Posts data to a host; returns a Gem::Net::HTTPResponse object.
Argument url
must be a URI; argument data
must be a hash:
_uri = uri.dup
_uri.path = '/posts'
data = {title: 'foo', body: 'bar', userId: 1}
res = Gem::Net::HTTP.post_form(_uri, data) # => #<Gem::Net::HTTPCreated 201 Created readbody=true>
puts res.body
Output:
{
"title": "foo",
"body": "bar",
"userId": "1",
"id": 101
}
882 883 884 885 886 887 888 889 890 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 882 def HTTP.post_form(url, params) req = Post.new(url) req.form_data = params req.basic_auth url.user, url.password if url.user start(url.hostname, url.port, :use_ssl => url.scheme == 'https' ) {|http| http.request(req) } end |
.Proxy(p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil) ⇒ Object
Creates an HTTP proxy class which behaves like Gem::Net::HTTP, but performs all access via the specified proxy.
This class is obsolete. You may pass these same parameters directly to Gem::Net::HTTP.new. See Gem::Net::HTTP.new for details of the arguments.
1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1739 def HTTP.Proxy(p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil) #:nodoc: return self unless p_addr Class.new(self) { @is_proxy_class = true if p_addr == :ENV then @proxy_from_env = true @proxy_address = nil @proxy_port = nil else @proxy_from_env = false @proxy_address = p_addr @proxy_port = p_port || default_port end @proxy_user = p_user @proxy_pass = p_pass } end |
.proxy_class? ⇒ Boolean
Returns true if self is a class which was created by HTTP::Proxy.
1762 1763 1764 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1762 def proxy_class? defined?(@is_proxy_class) ? @is_proxy_class : false end |
.socket_type ⇒ Object
:nodoc: obsolete
920 921 922 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 920 def HTTP.socket_type #:nodoc: obsolete BufferedIO end |
.start(address, *arg, &block) ⇒ Object
:call-seq:
HTTP.start(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, opts) -> http
HTTP.start(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, opts) {|http| ... } -> object
Creates a new Gem::Net::HTTP object, http
, via Gem::Net::HTTP.new:
-
For arguments
address
andport
, see Gem::Net::HTTP.new. -
For proxy-defining arguments
p_addr
throughp_pass
, see Proxy Server. -
For argument
opts
, see below.
With no block given:
-
Calls
http.start
with no block (see #start), which opens a TCP connection and HTTP session. -
Returns
http
. -
The caller should call #finish to close the session:
http = Gem::Net::HTTP.start(hostname) http.started? # => true http.finish http.started? # => false
With a block given:
-
Calls
http.start
with the block (see #start), which:-
Opens a TCP connection and HTTP session.
-
Calls the block, which may make any number of requests to the host.
-
Closes the HTTP session and TCP connection on block exit.
-
Returns the block’s value
object
.
-
-
Returns
object
.
Example:
hostname = 'jsonplaceholder.typicode.com'
Gem::Net::HTTP.start(hostname) do |http|
puts http.get('/todos/1').body
puts http.get('/todos/2').body
end
Output:
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
{
"userId": 1,
"id": 2,
"title": "quis ut nam facilis et officia qui",
"completed": false
}
If the last argument given is a hash, it is the opts
hash, where each key is a method or accessor to be called, and its value is the value to be set.
The keys may include:
-
#ca_file
-
#ca_path
-
#cert
-
#cert_store
-
#ciphers
-
#close_on_empty_response
-
ipaddr
(calls #ipaddr=) -
#keep_alive_timeout
-
#key
-
#open_timeout
-
#read_timeout
-
#ssl_timeout
-
#ssl_version
-
use_ssl
(calls #use_ssl=) -
#verify_callback
-
#verify_depth
-
#verify_mode
-
#write_timeout
Note: If port
is nil
and opts[:use_ssl]
is a truthy value, the value passed to new
is Gem::Net::HTTP.https_default_port, not port
.
1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1010 def HTTP.start(address, *arg, &block) # :yield: +http+ arg.pop if opt = Hash.try_convert(arg[-1]) port, p_addr, p_port, p_user, p_pass = *arg p_addr = :ENV if arg.size < 2 port = https_default_port if !port && opt && opt[:use_ssl] http = new(address, port, p_addr, p_port, p_user, p_pass) http.ipaddr = opt[:ipaddr] if opt && opt[:ipaddr] if opt if opt[:use_ssl] opt = {verify_mode: OpenSSL::SSL::VERIFY_PEER}.update(opt) end http.methods.grep(/\A(\w+)=\z/) do |meth| key = $1.to_sym opt.key?(key) or next http.__send__(meth, opt[key]) end end http.start(&block) end |
.version_1_1? ⇒ Boolean Also known as: is_version_1_1?
Returns false
; retained for compatibility.
746 747 748 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 746 def HTTP.version_1_1? #:nodoc: false end |
.version_1_2 ⇒ Object
Returns true
; retained for compatibility.
736 737 738 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 736 def HTTP.version_1_2 true end |
.version_1_2? ⇒ Boolean Also known as: is_version_1_2?
Returns true
; retained for compatibility.
741 742 743 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 741 def HTTP.version_1_2? true end |
Instance Method Details
#copy(path, initheader = nil) ⇒ Object
2123 2124 2125 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2123 def copy(path, initheader = nil) request(Copy.new(path, initheader)) end |
#delete(path, initheader = {'Depth' => 'Infinity'}) ⇒ Object
2097 2098 2099 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2097 def delete(path, initheader = {'Depth' => 'Infinity'}) request(Delete.new(path, initheader)) end |
#finish ⇒ Object
1708 1709 1710 1711 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1708 def finish raise IOError, 'HTTP session not yet started' unless started? do_finish end |
#get(path, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq:
get(path, initheader = nil) {|res| ... }
Sends a GET request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Get object created from string path
and initial headers hash initheader
.
With a block given, calls the block with the response body:
http = Gem::Net::HTTP.new(hostname)
http.get('/todos/1') do |res|
p res
end # => #<Gem::Net::HTTPOK 200 OK readbody=true>
Output:
"{\n \"userId\": 1,\n \"id\": 1,\n \"title\": \"delectus aut autem\",\n \"completed\": false\n}"
With no block given, simply returns the response object:
http.get('/') # => #<Gem::Net::HTTPOK 200 OK readbody=true>
Related:
-
Gem::Net::HTTP::Get: request class for HTTP method GET.
-
Gem::Net::HTTP.get: sends GET request, returns response body.
1914 1915 1916 1917 1918 1919 1920 1921 1922 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1914 def get(path, initheader = nil, dest = nil, &block) # :yield: +body_segment+ res = nil request(Get.new(path, initheader)) {|r| r.read_body dest, &block res = r } res end |
#head(path, initheader = nil) ⇒ Object
Sends a HEAD request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Head object created from string path
and initial headers hash initheader
:
res = http.head('/todos/1') # => #<Gem::Net::HTTPOK 200 OK readbody=true>
res.body # => nil
res.to_hash.take(3)
# =>
[["date", ["Wed, 15 Feb 2023 15:25:42 GMT"]],
["content-type", ["application/json; charset=utf-8"]],
["connection", ["close"]]]
1938 1939 1940 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1938 def head(path, initheader = nil) request(Head.new(path, initheader)) end |
#inspect ⇒ Object
1135 1136 1137 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1135 def inspect "#<#{self.class} #{@address}:#{@port} open=#{started?}>" end |
#ipaddr ⇒ Object
Returns the IP address for the connection.
If the session has not been started, returns the value set by #ipaddr=, or nil
if it has not been set:
http = Gem::Net::HTTP.new(hostname)
http.ipaddr # => nil
http.ipaddr = '172.67.155.76'
http.ipaddr # => "172.67.155.76"
If the session has been started, returns the IP address from the socket:
http = Gem::Net::HTTP.new(hostname)
http.start
http.ipaddr # => "172.67.155.76"
http.finish
1274 1275 1276 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1274 def ipaddr started? ? @socket.io.peeraddr[3] : @ipaddr end |
#ipaddr=(addr) ⇒ Object
1286 1287 1288 1289 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1286 def ipaddr=(addr) raise IOError, "ipaddr value changed, but session already started" if started? @ipaddr = addr end |
#lock(path, body, initheader = nil) ⇒ Object
Sends a LOCK request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Lock object created from string path
, string body
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Gem::Net::HTTP.new(hostname)
http.lock('/todos/1', data)
2043 2044 2045 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2043 def lock(path, body, initheader = nil) request(Lock.new(path, initheader), body) end |
#mkcol(path, body = nil, initheader = nil) ⇒ Object
Sends a MKCOL request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Mkcol object created from string path
, string body
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http.mkcol('/todos/1', data)
http = Gem::Net::HTTP.new(hostname)
2137 2138 2139 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2137 def mkcol(path, body = nil, initheader = nil) request(Mkcol.new(path, initheader), body) end |
#move(path, initheader = nil) ⇒ Object
2110 2111 2112 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2110 def move(path, initheader = nil) request(Move.new(path, initheader)) end |
#options(path, initheader = nil) ⇒ Object
2070 2071 2072 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2070 def (path, initheader = nil) request(Options.new(path, initheader)) end |
#patch(path, data, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq:
patch(path, data, initheader = nil) {|res| ... }
Sends a PATCH request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Patch object created from string path
, string data
, and initial headers hash initheader
.
With a block given, calls the block with the response body:
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Gem::Net::HTTP.new(hostname)
http.patch('/todos/1', data) do |res|
p res
end # => #<Gem::Net::HTTPOK 200 OK readbody=true>
Output:
"{\n \"userId\": 1,\n \"id\": 1,\n \"title\": \"delectus aut autem\",\n \"completed\": false,\n \"{\\\"userId\\\": 1, \\\"id\\\": 1, \\\"title\\\": \\\"delectus aut autem\\\", \\\"completed\\\": false}\": \"\"\n}"
With no block given, simply returns the response object:
http.patch('/todos/1', data) # => #<Gem::Net::HTTPCreated 201 Created readbody=true>
2001 2002 2003 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2001 def patch(path, data, initheader = nil, dest = nil, &block) # :yield: +body_segment+ send_entity(path, data, initheader, dest, Patch, &block) end |
#peer_cert ⇒ Object
Returns the X509 certificate chain (an array of strings) for the session’s socket peer, or nil
if none.
1537 1538 1539 1540 1541 1542 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1537 def peer_cert if not use_ssl? or not @socket return nil end @socket.io.peer_cert end |
#post(path, data, initheader = nil, dest = nil, &block) ⇒ Object
:call-seq:
post(path, data, initheader = nil) {|res| ... }
Sends a POST request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Post object created from string path
, string data
, and initial headers hash initheader
.
With a block given, calls the block with the response body:
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Gem::Net::HTTP.new(hostname)
http.post('/todos', data) do |res|
p res
end # => #<Gem::Net::HTTPCreated 201 Created readbody=true>
Output:
"{\n \"{\\\"userId\\\": 1, \\\"id\\\": 1, \\\"title\\\": \\\"delectus aut autem\\\", \\\"completed\\\": false}\": \"\",\n \"id\": 201\n}"
With no block given, simply returns the response object:
http.post('/todos', data) # => #<Gem::Net::HTTPCreated 201 Created readbody=true>
Related:
-
Gem::Net::HTTP::Post: request class for HTTP method POST.
-
Gem::Net::HTTP.post: sends POST request, returns response body.
1972 1973 1974 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1972 def post(path, data, initheader = nil, dest = nil, &block) # :yield: +body_segment+ send_entity(path, data, initheader, dest, Post, &block) end |
#propfind(path, body = nil, initheader = {'Depth' => '0'}) ⇒ Object
Sends a PROPFIND request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Propfind object created from string path
, string body
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Gem::Net::HTTP.new(hostname)
http.propfind('/todos/1', data)
2084 2085 2086 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2084 def propfind(path, body = nil, initheader = {'Depth' => '0'}) request(Propfind.new(path, initheader), body) end |
#proppatch(path, body, initheader = nil) ⇒ Object
Sends a PROPPATCH request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Proppatch object created from string path
, string body
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Gem::Net::HTTP.new(hostname)
http.proppatch('/todos/1', data)
2029 2030 2031 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2029 def proppatch(path, body, initheader = nil) request(Proppatch.new(path, initheader), body) end |
#proxy? ⇒ Boolean
Returns true
if a proxy server is defined, false
otherwise; see Proxy Server.
1785 1786 1787 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1785 def proxy? !!(@proxy_from_env ? proxy_uri : @proxy_address) end |
#proxy_from_env? ⇒ Boolean
Returns true
if the proxy server is defined in the environment, false
otherwise; see Proxy Server.
1792 1793 1794 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1792 def proxy_from_env? @proxy_from_env end |
#proxy_uri ⇒ Object
The proxy URI determined from the environment for this connection.
1797 1798 1799 1800 1801 1802 1803 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1797 def proxy_uri # :nodoc: return if @proxy_uri == false @proxy_uri ||= Gem::URI::HTTP.new( "http", nil, address, port, nil, nil, nil, nil, nil ).find_proxy || false @proxy_uri || nil end |
#put(path, data, initheader = nil) ⇒ Object
Sends a PUT request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Put object created from string path
, string data
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Gem::Net::HTTP.new(hostname)
http.put('/todos/1', data) # => #<Gem::Net::HTTPOK 200 OK readbody=true>
2015 2016 2017 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2015 def put(path, data, initheader = nil) request(Put.new(path, initheader), data) end |
#request(req, body = nil, &block) ⇒ Object
Sends the given request req
to the server; forms the response into a Gem::Net::HTTPResponse object.
The given req
must be an instance of a subclass of Gem::Net::HTTPRequest. Argument body
should be given only if needed for the request.
With no block given, returns the response object:
http = Gem::Net::HTTP.new(hostname)
req = Gem::Net::HTTP::Get.new('/todos/1')
http.request(req)
# => #<Gem::Net::HTTPOK 200 OK readbody=true>
req = Gem::Net::HTTP::Post.new('/todos')
http.request(req, 'xyzzy')
# => #<Gem::Net::HTTPCreated 201 Created readbody=true>
With a block given, calls the block with the response and returns the response:
req = Gem::Net::HTTP::Get.new('/todos/1')
http.request(req) do |res|
p res
end # => #<Gem::Net::HTTPOK 200 OK readbody=true>
Output:
#<Gem::Net::HTTPOK 200 OK readbody=false>
2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2295 def request(req, body = nil, &block) # :yield: +response+ unless started? start { req['connection'] ||= 'close' return request(req, body, &block) } end if proxy_user() req.proxy_basic_auth proxy_user(), proxy_pass() unless use_ssl? end req.set_body_internal body res = transport_request(req, &block) if sspi_auth?(res) sspi_auth(req) res = transport_request(req, &block) end res end |
#request_get(path, initheader = nil, &block) ⇒ Object Also known as: get2
Sends a GET request to the server; forms the response into a Gem::Net::HTTPResponse object.
The request is based on the Gem::Net::HTTP::Get object created from string path
and initial headers hash initheader
.
With no block given, returns the response object:
http = Gem::Net::HTTP.new(hostname)
http.request_get('/todos') # => #<Gem::Net::HTTPOK 200 OK readbody=true>
With a block given, calls the block with the response object and returns the response object:
http.request_get('/todos') do |res|
p res
end # => #<Gem::Net::HTTPOK 200 OK readbody=true>
Output:
#<Gem::Net::HTTPOK 200 OK readbody=false>
2176 2177 2178 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2176 def request_get(path, initheader = nil, &block) # :yield: +response+ request(Get.new(path, initheader), &block) end |
#request_head(path, initheader = nil, &block) ⇒ Object Also known as: head2
Sends a HEAD request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Head object created from string path
and initial headers hash initheader
.
http = Gem::Net::HTTP.new(hostname)
http.head('/todos/1') # => #<Gem::Net::HTTPOK 200 OK readbody=true>
2189 2190 2191 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2189 def request_head(path, initheader = nil, &block) request(Head.new(path, initheader), &block) end |
#request_post(path, data, initheader = nil, &block) ⇒ Object Also known as: post2
Sends a POST request to the server; forms the response into a Gem::Net::HTTPResponse object.
The request is based on the Gem::Net::HTTP::Post object created from string path
, string data
, and initial headers hash initheader
.
With no block given, returns the response object:
http = Gem::Net::HTTP.new(hostname)
http.post('/todos', 'xyzzy')
# => #<Gem::Net::HTTPCreated 201 Created readbody=true>
With a block given, calls the block with the response body and returns the response object:
http.post('/todos', 'xyzzy') do |res|
p res
end # => #<Gem::Net::HTTPCreated 201 Created readbody=true>
Output:
"{\n \"xyzzy\": \"\",\n \"id\": 201\n}"
2216 2217 2218 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2216 def request_post(path, data, initheader = nil, &block) # :yield: +response+ request Post.new(path, initheader), data, &block end |
#request_put(path, data, initheader = nil, &block) ⇒ Object Also known as: put2
Sends a PUT request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Put object created from string path
, string data
, and initial headers hash initheader
.
http = Gem::Net::HTTP.new(hostname)
http.put('/todos/1', 'xyzzy')
# => #<Gem::Net::HTTPOK 200 OK readbody=true>
2230 2231 2232 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2230 def request_put(path, data, initheader = nil, &block) #:nodoc: request Put.new(path, initheader), data, &block end |
#send_request(name, path, data = nil, header = nil) ⇒ Object
Sends an HTTP request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTPRequest object created from string path
, string data
, and initial headers hash header
. That object is an instance of the subclass of Gem::Net::HTTPRequest, that corresponds to the given uppercase string name
, which must be an HTTP request method or a WebDAV request method.
Examples:
http = Gem::Net::HTTP.new(hostname)
http.send_request('GET', '/todos/1')
# => #<Gem::Net::HTTPOK 200 OK readbody=true>
http.send_request('POST', '/todos', 'xyzzy')
# => #<Gem::Net::HTTPCreated 201 Created readbody=true>
2259 2260 2261 2262 2263 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2259 def send_request(name, path, data = nil, header = nil) has_response_body = name != 'HEAD' r = HTTPGenericRequest.new(name,(data ? true : false),has_response_body,path,header) request r, data end |
#set_debug_output(output) ⇒ Object
WARNING This method opens a serious security hole. Never use this method in production code.
Sets the output stream for debugging:
http = Gem::Net::HTTP.new(hostname)
File.open('t.tmp', 'w') do |file|
http.set_debug_output(file)
http.start
http.get('/nosuch/1')
http.finish
end
puts File.read('t.tmp')
Output:
opening connection to jsonplaceholder.typicode.com:80...
opened
<- "GET /nosuch/1 HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: Ruby\r\nHost: jsonplaceholder.typicode.com\r\n\r\n"
-> "HTTP/1.1 404 Not Found\r\n"
-> "Date: Mon, 12 Dec 2022 21:14:11 GMT\r\n"
-> "Content-Type: application/json; charset=utf-8\r\n"
-> "Content-Length: 2\r\n"
-> "Connection: keep-alive\r\n"
-> "X-Powered-By: Express\r\n"
-> "X-Ratelimit-Limit: 1000\r\n"
-> "X-Ratelimit-Remaining: 999\r\n"
-> "X-Ratelimit-Reset: 1670879660\r\n"
-> "Vary: Origin, Accept-Encoding\r\n"
-> "Access-Control-Allow-Credentials: true\r\n"
-> "Cache-Control: max-age=43200\r\n"
-> "Pragma: no-cache\r\n"
-> "Expires: -1\r\n"
-> "X-Content-Type-Options: nosniff\r\n"
-> "Etag: W/\"2-vyGp6PvFo4RvsFtPoIWeCReyIC8\"\r\n"
-> "Via: 1.1 vegur\r\n"
-> "CF-Cache-Status: MISS\r\n"
-> "Server-Timing: cf-q-config;dur=1.3000000762986e-05\r\n"
-> "Report-To: {\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=yOr40jo%2BwS1KHzhTlVpl54beJ5Wx2FcG4gGV0XVrh3X9OlR5q4drUn2dkt5DGO4GDcE%2BVXT7CNgJvGs%2BZleIyMu8CLieFiDIvOviOY3EhHg94m0ZNZgrEdpKD0S85S507l1vsEwEHkoTm%2Ff19SiO\"}],\"group\":\"cf-nel\",\"max_age\":604800}\r\n"
-> "NEL: {\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}\r\n"
-> "Server: cloudflare\r\n"
-> "CF-RAY: 778977dc484ce591-DFW\r\n"
-> "alt-svc: h3=\":443\"; ma=86400, h3-29=\":443\"; ma=86400\r\n"
-> "\r\n"
reading 2 bytes...
-> "{}"
read 2 bytes
Conn keep-alive
1188 1189 1190 1191 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1188 def set_debug_output(output) warn 'Gem::Net::HTTP#set_debug_output called after HTTP started', uplevel: 1 if started? @debug_output = output end |
#start ⇒ Object
Starts an HTTP session.
Without a block, returns self
:
http = Gem::Net::HTTP.new(hostname)
# => #<Gem::Net::HTTP jsonplaceholder.typicode.com:80 open=false>
http.start
# => #<Gem::Net::HTTP jsonplaceholder.typicode.com:80 open=true>
http.started? # => true
http.finish
With a block, calls the block with self
, finishes the session when the block exits, and returns the block’s value:
http.start do |http|
http
end
# => #<Gem::Net::HTTP jsonplaceholder.typicode.com:80 open=false>
http.started? # => false
1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1565 def start # :yield: http raise IOError, 'HTTP session already opened' if @started if block_given? begin do_start return yield(self) ensure do_finish end end do_start self end |
#started? ⇒ Boolean Also known as: active?
1413 1414 1415 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1413 def started? @started end |
#trace(path, initheader = nil) ⇒ Object
2150 2151 2152 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2150 def trace(path, initheader = nil) request(Trace.new(path, initheader)) end |
#unlock(path, body, initheader = nil) ⇒ Object
Sends an UNLOCK request to the server; returns an instance of a subclass of Gem::Net::HTTPResponse.
The request is based on the Gem::Net::HTTP::Unlock object created from string path
, string body
, and initial headers hash initheader
.
data = '{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false}'
http = Gem::Net::HTTP.new(hostname)
http.unlock('/todos/1', data)
2057 2058 2059 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 2057 def unlock(path, body, initheader = nil) request(Unlock.new(path, initheader), body) end |
#use_ssl=(flag) ⇒ Object
Sets whether a new session is to use Transport Layer Security:
Raises IOError if attempting to change during a session.
Raises OpenSSL::SSL::SSLError if the port is not an HTTPS port.
1435 1436 1437 1438 1439 1440 1441 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1435 def use_ssl=(flag) flag = flag ? true : false if started? and @use_ssl != flag raise IOError, "use_ssl value changed, but session already started" end @use_ssl = flag end |
#use_ssl? ⇒ Boolean
Returns true
if self
uses SSL, false
otherwise. See Gem::Net::HTTP#use_ssl=.
1425 1426 1427 |
# File 'lib/rubygems/vendor/net-http/lib/net/http.rb', line 1425 def use_ssl? @use_ssl end |