Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →
instance method
Net::HTTPHeader#range=
(::Range[::Integer] | ::Numeric r, ?::Integer? e) -> ::Range[::Integer]
range=(r, e = nil)
lib/net/http/header.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.1.0-preview1/lib/net/http/header.rb, line 594
def set_range(r, e = nil)
unless r
@header.delete 'range'
return r
end
r = (r...r+e) if e
case r
when Numeric
n = r.to_i
rangestr = (n > 0 ? "0-#{n-1}" : "-#{-n}")
when Range
first = r.first
last = r.end
last -= 1 if r.exclude_end?
if last == -1
rangestr = (first > 0 ? "#{first}-" : "-#{-first}")
else
raise Net::HTTPHeaderSyntaxError, 'range.first is negative' if first < 0
raise Net::HTTPHeaderSyntaxError, 'range.last is negative' if last < 0
raise Net::HTTPHeaderSyntaxError, 'must be .first < .last' if first > last
rangestr = "#{first}-#{last}"
end
else
raise TypeError, 'Range/Integer is required'
end
@header['range'] = ["bytes=#{rangestr}"]
r
end
Alias of #set_range
Sets the value for field 'Range'; see Range request header:
With argument length:
Example
req = Net::HTTP::Get.new(uri) req.set_range(100) # => 100 req['Range'] # => "bytes=0-99"
With arguments offset and length:
Example
req.set_range(100, 100) # => 100...200 req['Range'] # => "bytes=100-199"
With argument range:
Example
req.set_range(100..199) # => 100..199 req['Range'] # => "bytes=100-199"
Net::HTTPHeader#range= is an alias for Net::HTTPHeader#set_range.
See also
#set_range
#range
#range_length
#proxy_basic_auth
also in
4.0 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0