Skip to content

Commit f8b6b76

Browse files
[DOC] Reorganize doc for proxy server (#117)
1 parent 22c0d34 commit f8b6b76

File tree

1 file changed

+100
-98
lines changed

1 file changed

+100
-98
lines changed

lib/net/http.rb

Lines changed: 100 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -332,20 +332,101 @@ class HTTPHeaderSyntaxError < StandardError; end
332332
# uri # => #<URI::HTTPS https://jsonplaceholder.typicode.com/>
333333
# Net::HTTP.get(uri)
334334
#
335-
# == Proxies
335+
# == Proxy Server
336336
#
337-
# \Net::HTTP will automatically create a proxy from the +http_proxy+
338-
# environment variable if it is present. To disable use of +http_proxy+,
339-
# pass +nil+ for the proxy address.
337+
# An \HTTP object can have
338+
# a {proxy server}[https://en.wikipedia.org/wiki/Proxy_server].
340339
#
341-
# You may also create a custom proxy:
340+
# You can create an \HTTP object with a proxy server
341+
# using method Net::HTTP.new or method Net::HTTP.start.
342342
#
343-
# proxy_addr = 'your.proxy.host'
344-
# proxy_port = 8080
343+
# The proxy may be defined either by argument +p_addr+
344+
# or by environment variable <tt>'http_proxy'</tt>.
345345
#
346-
# Net::HTTP.new('example.com', nil, proxy_addr, proxy_port).start { |http|
347-
# # always proxy via your.proxy.addr:8080
348-
# }
346+
# === Proxy Using Argument +p_addr+ as a \String
347+
#
348+
# When argument +p_addr+ is a string hostname,
349+
# the returned +http+ has the given host as its proxy:
350+
#
351+
# http = Net::HTTP.new(hostname, nil, 'proxy.example')
352+
# http.proxy? # => true
353+
# http.proxy_from_env? # => false
354+
# http.proxy_address # => "proxy.example"
355+
# # These use default values.
356+
# http.proxy_port # => 80
357+
# http.proxy_user # => nil
358+
# http.proxy_pass # => nil
359+
#
360+
# The port, username, and password for the proxy may also be given:
361+
#
362+
# http = Net::HTTP.new(hostname, nil, 'proxy.example', 8000, 'pname', 'ppass')
363+
# # => #<Net::HTTP jsonplaceholder.typicode.com:80 open=false>
364+
# http.proxy? # => true
365+
# http.proxy_from_env? # => false
366+
# http.proxy_address # => "proxy.example"
367+
# http.proxy_port # => 8000
368+
# http.proxy_user # => "pname"
369+
# http.proxy_pass # => "ppass"
370+
#
371+
# === Proxy Using <tt>ENV['http_proxy']</tt>
372+
#
373+
# When environment variable <tt>'http_proxy'</tt>
374+
# is set to a \URI string,
375+
# the returned +http+ will have the server at that URI as its proxy;
376+
# note that the \URI string must have a protocol
377+
# such as <tt>'http'</tt> or <tt>'https'</tt>:
378+
#
379+
# ENV['http_proxy'] = 'http://example.com'
380+
# http = Net::HTTP.new(hostname)
381+
# http.proxy? # => true
382+
# http.proxy_from_env? # => true
383+
# http.proxy_address # => "example.com"
384+
# # These use default values.
385+
# http.proxy_port # => 80
386+
# http.proxy_user # => nil
387+
# http.proxy_pass # => nil
388+
#
389+
# The \URI string may include proxy username, password, and port number:
390+
#
391+
# ENV['http_proxy'] = 'http://pname:[email protected]:8000'
392+
# http = Net::HTTP.new(hostname)
393+
# http.proxy? # => true
394+
# http.proxy_from_env? # => true
395+
# http.proxy_address # => "example.com"
396+
# http.proxy_port # => 8000
397+
# http.proxy_user # => "pname"
398+
# http.proxy_pass # => "ppass"
399+
#
400+
# === Filtering Proxies
401+
#
402+
# With method Net::HTTP.new (but not Net::HTTP.start),
403+
# you can use argument +p_no_proxy+ to filter proxies:
404+
#
405+
# - Reject a certain address:
406+
#
407+
# http = Net::HTTP.new('example.com', nil, 'proxy.example', 8000, 'pname', 'ppass', 'proxy.example')
408+
# http.proxy_address # => nil
409+
#
410+
# - Reject certain domains or subdomains:
411+
#
412+
# http = Net::HTTP.new('example.com', nil, 'my.proxy.example', 8000, 'pname', 'ppass', 'proxy.example')
413+
# http.proxy_address # => nil
414+
#
415+
# - Reject certain addresses and port combinations:
416+
#
417+
# http = Net::HTTP.new('example.com', nil, 'proxy.example', 8000, 'pname', 'ppass', 'proxy.example:1234')
418+
# http.proxy_address # => "proxy.example"
419+
#
420+
# http = Net::HTTP.new('example.com', nil, 'proxy.example', 8000, 'pname', 'ppass', 'proxy.example:8000')
421+
# http.proxy_address # => nil
422+
#
423+
# - Reject a list of the types above delimited using a comma:
424+
#
425+
# http = Net::HTTP.new('example.com', nil, 'proxy.example', 8000, 'pname', 'ppass', 'my.proxy,proxy.example:8000')
426+
# http.proxy_address # => nil
427+
#
428+
# http = Net::HTTP.new('example.com', nil, 'my.proxy', 8000, 'pname', 'ppass', 'my.proxy,proxy.example:8000')
429+
# http.proxy_address # => nil
349430
#
350431
# == Compression
351432
#
@@ -564,14 +645,11 @@ def HTTP.socket_type #:nodoc: obsolete
564645
#
565646
# Creates a new \Net::HTTP object, +http+, via \Net::HTTP.new:
566647
#
567-
# Net::HTTP.new(address, port, p_addr, p_port, p_user, p_pass)
568-
#
569-
# - For arguments +hostname+ through +p_pass+, see Net::HTTP.new.
648+
# - For arguments +address+ and +port+, see Net::HTTP.new.
649+
# - For proxy-defining arguments +p_addr+ through +p_pass+,
650+
# see {Proxy Server}[rdoc-ref:Net::HTTP@Proxy+Server].
570651
# - For argument +opts+, see below.
571652
#
572-
# Note: If +port+ is +nil+ and <tt>opts[:use_ssl]</tt> is a truthy value,
573-
# the value passed to +new+ is Net::HTTP.https_default_port, not +port+.
574-
#
575653
# With no block given:
576654
#
577655
# - Calls <tt>http.start</tt> with no block (see #start),
@@ -644,6 +722,9 @@ def HTTP.socket_type #:nodoc: obsolete
644722
# - #verify_mode
645723
# - #write_timeout
646724
#
725+
# Note: If +port+ is +nil+ and <tt>opts[:use_ssl]</tt> is a truthy value,
726+
# the value passed to +new+ is Net::HTTP.https_default_port, not +port+.
727+
#
647728
def HTTP.start(address, *arg, &block) # :yield: +http+
648729
arg.pop if opt = Hash.try_convert(arg[-1])
649730
port, p_addr, p_port, p_user, p_pass = *arg
@@ -673,9 +754,7 @@ class << HTTP
673754
# Returns a new \Net::HTTP object +http+
674755
# (but does not open a TCP connection or \HTTP session).
675756
#
676-
# <b>No Proxy</b>
677-
#
678-
# With only string argument +hostname+ given
757+
# With only string argument +address+ given
679758
# (and <tt>ENV['http_proxy']</tt> undefined or +nil+),
680759
# the returned +http+:
681760
#
@@ -698,85 +777,8 @@ class << HTTP
698777
# # => #<Net::HTTP jsonplaceholder.typicode.com:8000 open=false>
699778
# http.port # => 8000
700779
#
701-
# <b>Proxy Using Argument +p_addr+ as a \String</b>
702-
#
703-
# When argument +p_addr+ is a string hostname,
704-
# the returned +http+ has a proxy:
705-
#
706-
# http = Net::HTTP.new(hostname, nil, 'proxy.example')
707-
# # => #<Net::HTTP jsonplaceholder.typicode.com:80 open=false>
708-
# http.proxy? # => true
709-
# http.proxy_address # => "proxy.example"
710-
# # These use default values.
711-
# http.proxy_port # => 80
712-
# http.proxy_user # => nil
713-
# http.proxy_pass # => nil
714-
#
715-
# The port, username, and password for the proxy may also be given:
716-
#
717-
# http = Net::HTTP.new(hostname, nil, 'proxy.example', 8000, 'pname', 'ppass')
718-
# # => #<Net::HTTP jsonplaceholder.typicode.com:80 open=false>
719-
# http.proxy? # => true
720-
# http.proxy_address # => "proxy.example"
721-
# http.proxy_port # => 8000
722-
# http.proxy_user # => "pname"
723-
# http.proxy_pass # => "ppass"
724-
#
725-
# <b>Proxy Using <tt>ENV['http_proxy']</tt></b>
726-
#
727-
# When environment variable <tt>'http_proxy'</tt>
728-
# is set to a \URI string,
729-
# the returned +http+ will have that URI as its proxy;
730-
# note that the \URI string must have a protocol
731-
# such as <tt>'http'</tt> or <tt>'https'</tt>:
732-
#
733-
# ENV['http_proxy'] = 'http://example.com'
734-
# # => "http://example.com"
735-
# http = Net::HTTP.new(hostname)
736-
# # => #<Net::HTTP jsonplaceholder.typicode.com:80 open=false>
737-
# http.proxy? # => true
738-
# http.address # => "jsonplaceholder.typicode.com"
739-
# http.proxy_address # => "example.com"
740-
#
741-
# The \URI string may include proxy username, password, and port number:
742-
#
743-
# ENV['http_proxy'] = 'http://pname:[email protected]:8000'
744-
# # => "http://pname:[email protected]:8000"
745-
# http = Net::HTTP.new(hostname)
746-
# # => #<Net::HTTP jsonplaceholder.typicode.com:80 open=false>
747-
# http.proxy_port # => 8000
748-
# http.proxy_user # => "pname"
749-
# http.proxy_pass # => "ppass"
750-
#
751-
# <b>Argument +p_no_proxy+</b>
752-
#
753-
# You can use argument +p_no_proxy+ to reject certain proxies:
754-
#
755-
# - Reject a certain address:
756-
#
757-
# http = Net::HTTP.new('example.com', nil, 'proxy.example', 8000, 'pname', 'ppass', 'proxy.example')
758-
# http.proxy_address # => nil
759-
#
760-
# - Reject certain domains or subdomains:
761-
#
762-
# http = Net::HTTP.new('example.com', nil, 'my.proxy.example', 8000, 'pname', 'ppass', 'proxy.example')
763-
# http.proxy_address # => nil
764-
#
765-
# - Reject certain addresses and port combinations:
766-
#
767-
# http = Net::HTTP.new('example.com', nil, 'proxy.example', 8000, 'pname', 'ppass', 'proxy.example:1234')
768-
# http.proxy_address # => "proxy.example"
769-
#
770-
# http = Net::HTTP.new('example.com', nil, 'proxy.example', 8000, 'pname', 'ppass', 'proxy.example:8000')
771-
# http.proxy_address # => nil
772-
#
773-
# - Reject a list of the types above delimited using a comma:
774-
#
775-
# http = Net::HTTP.new('example.com', nil, 'proxy.example', 8000, 'pname', 'ppass', 'my.proxy,proxy.example:8000')
776-
# http.proxy_address # => nil
777-
#
778-
# http = Net::HTTP.new('example.com', nil, 'my.proxy', 8000, 'pname', 'ppass', 'my.proxy,proxy.example:8000')
779-
# http.proxy_address # => nil
780+
# For proxy-defining arguments +p_addr+ through +p_no_proxy+,
781+
# see {Proxy Server}[rdoc-ref:Net::HTTP@Proxy+Server].
780782
#
781783
def HTTP.new(address, port = nil, p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_no_proxy = nil)
782784
http = super address, port

0 commit comments

Comments
 (0)