open-uri 0.3.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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.