net-http 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a306a97039eef1800016a611dee36fa0d342b5f234bf6e0a512d981abd12ce8d
4
- data.tar.gz: 39583accf1ec3b888c4e368eb0d3cf41add46ebfd18a6d7dcbea1cc69712f219
3
+ metadata.gz: 3218ca14e4d201668faf051c7e2920054e7e02410ade361a466ce614a662d69f
4
+ data.tar.gz: 0331ab0f1b2d9160faa5842f892780d9d933bdbc5102608a5cfc51b2d116f043
5
5
  SHA512:
6
- metadata.gz: 21ab016c4d12100c405aec7b8426d81f4a88ac2bc7019353d729837d17e3a95899df04818f787319c32f29b349b7527b7903a65a897e8353382d5461070465c7
7
- data.tar.gz: 38593be710550d52aaf31d50d746e7f5da92fb1c3d4b451968bda3c0af9b033acefc2fd404f6a083025d340d8abebd7d2061fa77343f081b78bd48c19aa82b39
6
+ metadata.gz: '02074786b78a941fedbd736b6fcf987f31f3c5b33a3215bc4f7017bed37188cb33cdfe1d69c6a35f81377f91858772cb020c14286f3413c48b341853062574ff'
7
+ data.tar.gz: e5612a685ba130029da39e40085b2b15be9e4ce65093846c51b1d96ea924860c1b7224e0cd05eba188bf2e648a07e8daa3fe0d227f3a7c8aa3e5ea18307f23f0
@@ -7,18 +7,16 @@ jobs:
7
7
  name: build (${{ matrix.ruby }} / ${{ matrix.os }})
8
8
  strategy:
9
9
  matrix:
10
- ruby: [ 2.7, 2.6, head ]
10
+ ruby: [ '3.0', 2.7, 2.6, head ]
11
11
  os: [ ubuntu-latest, macos-latest ]
12
12
  runs-on: ${{ matrix.os }}
13
13
  steps:
14
- - uses: actions/checkout@master
14
+ - uses: actions/checkout@v2
15
15
  - name: Set up Ruby
16
16
  uses: ruby/setup-ruby@v1
17
17
  with:
18
18
  ruby-version: ${{ matrix.ruby }}
19
19
  - name: Install dependencies
20
- run: |
21
- gem install bundler --no-document
22
- bundle install
20
+ run: bundle install
23
21
  - name: Run test
24
22
  run: rake test
data/Gemfile CHANGED
@@ -4,3 +4,4 @@ gemspec
4
4
 
5
5
  gem "rake"
6
6
  gem "test-unit"
7
+ gem "webrick"
data/Gemfile.lock CHANGED
@@ -1,15 +1,24 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- net-http (0.1.0)
4
+ net-http (0.1.1)
5
+ net-protocol
6
+ uri
5
7
 
6
8
  GEM
7
9
  remote: https://rubygems.org/
8
10
  specs:
11
+ io-wait (0.1.0)
12
+ net-protocol (0.1.0)
13
+ io-wait
14
+ timeout
9
15
  power_assert (1.1.5)
10
16
  rake (13.0.1)
11
17
  test-unit (3.3.5)
12
18
  power_assert
19
+ timeout (0.1.1)
20
+ uri (0.10.1)
21
+ webrick (1.7.0)
13
22
 
14
23
  PLATFORMS
15
24
  ruby
@@ -18,6 +27,7 @@ DEPENDENCIES
18
27
  net-http!
19
28
  rake
20
29
  test-unit
30
+ webrick
21
31
 
22
32
  BUNDLED WITH
23
33
  2.1.4
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Net::Http
1
+ # Net::HTTP
2
2
 
3
3
  Net::HTTP provides a rich library which can be used to build HTTP
4
4
  user-agents. For more details about HTTP see
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ end
9
9
 
10
10
  task :sync_tool do
11
11
  require 'fileutils'
12
- FileUtils.cp "../ruby/tool/lib/test/unit/core_assertions.rb", "./test/lib"
12
+ FileUtils.cp "../ruby/tool/lib/core_assertions.rb", "./test/lib"
13
13
  FileUtils.cp "../ruby/tool/lib/envutil.rb", "./test/lib"
14
14
  FileUtils.cp "../ruby/tool/lib/find_executable.rb", "./test/lib"
15
15
  end
@@ -143,7 +143,7 @@ class Net::HTTPGenericRequest
143
143
  end
144
144
 
145
145
  if host = self['host']
146
- host.sub!(/:.*/s, ''.freeze)
146
+ host.sub!(/:.*/m, ''.freeze)
147
147
  elsif host = @uri.host
148
148
  else
149
149
  host = addr
@@ -202,9 +202,7 @@ class Net::HTTPGenericRequest
202
202
  IO.copy_stream(f, chunker)
203
203
  chunker.finish
204
204
  else
205
- # copy_stream can sendfile() to sock.io unless we use SSL.
206
- # If sock.io is an SSLSocket, copy_stream will hit SSL_write()
207
- IO.copy_stream(f, sock.io)
205
+ IO.copy_stream(f, sock)
208
206
  end
209
207
  end
210
208
 
data/lib/net/http.rb CHANGED
@@ -388,12 +388,11 @@ module Net #:nodoc:
388
388
  class HTTP < Protocol
389
389
 
390
390
  # :stopdoc:
391
- VERSION = "0.1.1"
391
+ VERSION = "0.2.0"
392
392
  Revision = %q$Revision$.split[1]
393
393
  HTTPVersion = '1.1'
394
394
  begin
395
395
  require 'zlib'
396
- require 'stringio' #for our purposes (unpacking gzip) lump these together
397
396
  HAVE_ZLIB=true
398
397
  rescue LoadError
399
398
  HAVE_ZLIB=false
@@ -524,14 +523,13 @@ module Net #:nodoc:
524
523
  #
525
524
  # { "cmd" => "search", "q" => "ruby", "max" => "50" }
526
525
  #
527
- # This method also does Basic Authentication iff +url+.user exists.
526
+ # This method also does Basic Authentication if and only if +url+.user exists.
528
527
  # But userinfo for authentication is deprecated (RFC3986).
529
528
  # So this feature will be removed.
530
529
  #
531
530
  # Example:
532
531
  #
533
532
  # require 'net/http'
534
- # require 'uri'
535
533
  #
536
534
  # Net::HTTP.post_form URI('http://www.example.com/search.cgi'),
537
535
  # { "q" => "ruby", "max" => "50" }
@@ -973,6 +971,12 @@ module Net #:nodoc:
973
971
  private :do_start
974
972
 
975
973
  def connect
974
+ if use_ssl?
975
+ # reference early to load OpenSSL before connecting,
976
+ # as OpenSSL may take time to load.
977
+ @ssl_context = OpenSSL::SSL::SSLContext.new
978
+ end
979
+
976
980
  if proxy? then
977
981
  conn_addr = proxy_address
978
982
  conn_port = proxy_port
@@ -982,14 +986,13 @@ module Net #:nodoc:
982
986
  end
983
987
 
984
988
  D "opening connection to #{conn_addr}:#{conn_port}..."
985
- s = Timeout.timeout(@open_timeout, Net::OpenTimeout) {
986
- begin
987
- TCPSocket.open(conn_addr, conn_port, @local_host, @local_port)
988
- rescue => e
989
- raise e, "Failed to open TCP connection to " +
990
- "#{conn_addr}:#{conn_port} (#{e.message})"
991
- end
992
- }
989
+ begin
990
+ s = Socket.tcp conn_addr, conn_port, @local_host, @local_port, connect_timeout: @open_timeout
991
+ rescue => e
992
+ e = Net::OpenTimeout.new(e) if e.is_a?(Errno::ETIMEDOUT) #for compatibility with previous versions
993
+ raise e, "Failed to open TCP connection to " +
994
+ "#{conn_addr}:#{conn_port} (#{e.message})"
995
+ end
993
996
  s.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
994
997
  D "opened"
995
998
  if use_ssl?
@@ -1020,7 +1023,6 @@ module Net #:nodoc:
1020
1023
  end
1021
1024
  end
1022
1025
  end
1023
- @ssl_context = OpenSSL::SSL::SSLContext.new
1024
1026
  @ssl_context.set_params(ssl_parameters)
1025
1027
  @ssl_context.session_cache_mode =
1026
1028
  OpenSSL::SSL::SSLContext::SESSION_CACHE_CLIENT |
@@ -1180,7 +1182,8 @@ module Net #:nodoc:
1180
1182
  # The username of the proxy server, if one is configured.
1181
1183
  def proxy_user
1182
1184
  if ENVIRONMENT_VARIABLE_IS_MULTIUSER_SAFE && @proxy_from_env
1183
- proxy_uri&.user
1185
+ user = proxy_uri&.user
1186
+ unescape(user) if user
1184
1187
  else
1185
1188
  @proxy_user
1186
1189
  end
@@ -1189,7 +1192,8 @@ module Net #:nodoc:
1189
1192
  # The password of the proxy server, if one is configured.
1190
1193
  def proxy_pass
1191
1194
  if ENVIRONMENT_VARIABLE_IS_MULTIUSER_SAFE && @proxy_from_env
1192
- proxy_uri&.password
1195
+ pass = proxy_uri&.password
1196
+ unescape(pass) if pass
1193
1197
  else
1194
1198
  @proxy_pass
1195
1199
  end
@@ -1200,6 +1204,11 @@ module Net #:nodoc:
1200
1204
 
1201
1205
  private
1202
1206
 
1207
+ def unescape(value)
1208
+ require 'cgi/util'
1209
+ CGI.unescape(value)
1210
+ end
1211
+
1203
1212
  # without proxy, obsolete
1204
1213
 
1205
1214
  def conn_address # :nodoc:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - NARUSE, Yui
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-22 00:00:00.000000000 Z
11
+ date: 2021-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-protocol
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  requirements: []
92
- rubygems_version: 3.2.2
92
+ rubygems_version: 3.3.0.dev
93
93
  signing_key:
94
94
  specification_version: 4
95
95
  summary: HTTP client api for Ruby.