open-uri 0.3.0 → 0.4.1

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/open-uri.rb +10 -0
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fdfb473bed054e3c79c78c0e101bc019b4501a85e4cdf2c4feac15f1e288f427
4
- data.tar.gz: ee7f6ee4dbc4fde6edb7b30c64ae97230b9862b7f26f3e43a22b42315aa33247
3
+ metadata.gz: 78f03a56856bfc2aa1dbdd08478f6bda3ea2c29f83d7cd99ef762f5c0b52e067
4
+ data.tar.gz: cbd9c8771d3eb265509ad998d1331098f1866000e07ab8cfaa3dfaac4f31a360
5
5
  SHA512:
6
- metadata.gz: 1a448a39f6fb296628117482836b9b2a64dd7a1f465f87b2c224afda3c78defbbd5424c3c123ac784b8e8ec3dfb03ab43b904d55eff7ec255f4c591d16f2537d
7
- data.tar.gz: d1f741ea9715d11d0cdc2036ba305134cb689e70911fa868d15ca8edcba29e9e802bf12377886896ab4fecaa3140601fdd4b9b6098dc04b4c0db8c0970b6f827
6
+ metadata.gz: 23431550f621fade4ae9fa17ab13212dfc4a4d401d44e0b483e0315f223eb237610fb761acdc36c2eba70259aed5f11fc1fec748cdc75b8390dd2873a00f3ff0
7
+ data.tar.gz: dbb275774fe23edfaf364819ebabe871378831f3fa758a25aa9641040887cd878945b84d2a42b32d0436d0ecfcf35e2358be143028b25cce0bcbb57b5fa73176
data/lib/open-uri.rb CHANGED
@@ -31,6 +31,7 @@ module URI
31
31
  super
32
32
  end
33
33
  end
34
+ singleton_class.send(:ruby2_keywords, :open) if respond_to?(:ruby2_keywords, true)
34
35
  end
35
36
 
36
37
  # OpenURI is an easy-to-use wrapper for Net::HTTP, Net::HTTPS and Net::FTP.
@@ -89,6 +90,9 @@ end
89
90
  # Author:: Tanaka Akira <akr@m17n.org>
90
91
 
91
92
  module OpenURI
93
+
94
+ VERSION = "0.4.1"
95
+
92
96
  Options = {
93
97
  :proxy => true,
94
98
  :proxy_http_basic_authentication => true,
@@ -104,6 +108,7 @@ module OpenURI
104
108
  :ftp_active_mode => false,
105
109
  :redirect => true,
106
110
  :encoding => nil,
111
+ :max_redirects => 64,
107
112
  }
108
113
 
109
114
  def OpenURI.check_options(options) # :nodoc:
@@ -207,6 +212,7 @@ module OpenURI
207
212
  end
208
213
 
209
214
  uri_set = {}
215
+ max_redirects = options[:max_redirects]
210
216
  buf = nil
211
217
  while true
212
218
  redirect = catch(:open_uri_redirect) {
@@ -234,6 +240,7 @@ module OpenURI
234
240
  uri = redirect
235
241
  raise "HTTP redirection loop: #{uri}" if uri_set.include? uri.to_s
236
242
  uri_set[uri.to_s] = true
243
+ raise TooManyRedirects.new("Too many redirects", buf.io) if max_redirects && uri_set.size > max_redirects
237
244
  else
238
245
  break
239
246
  end
@@ -388,6 +395,9 @@ module OpenURI
388
395
  attr_reader :uri
389
396
  end
390
397
 
398
+ class TooManyRedirects < HTTPError
399
+ end
400
+
391
401
  class Buffer # :nodoc: all
392
402
  def initialize
393
403
  @io = StringIO.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: open-uri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tanaka Akira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-05 00:00:00.000000000 Z
11
+ date: 2023-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: uri
@@ -84,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
86
  requirements: []
87
- rubygems_version: 3.4.0.dev
87
+ rubygems_version: 3.5.0.dev
88
88
  signing_key:
89
89
  specification_version: 4
90
90
  summary: An easy-to-use wrapper for Net::HTTP, Net::HTTPS and Net::FTP.