Method: Gem::Net::HTTPHeader#set_range
- Defined in:
- lib/rubygems/net-http/lib/net/http/header.rb
#set_range(r, e = nil) ⇒ Object Also known as: range=
call-seq:
set_range(length) -> length
set_range(offset, length) -> range
set_range(begin..length) -> range
Sets the value for field 'Range'; see Range request header:
With argument length:
req = Gem::Net::HTTP::Get.new(uri)
req.set_range(100) # => 100
req['Range'] # => "bytes=0-99"
With arguments offset and length:
req.set_range(100, 100) # => 100...200
req['Range'] # => "bytes=100-199"
With argument range:
req.set_range(100..199) # => 100..199
req['Range'] # => "bytes=100-199"
Gem::Net::HTTPHeader#range= is an alias for Gem::Net::HTTPHeader#set_range.
576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 |
# File 'lib/rubygems/net-http/lib/net/http/header.rb', line 576 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 Gem::Net::HTTPHeaderSyntaxError, 'range.first is negative' if first < 0 raise Gem::Net::HTTPHeaderSyntaxError, 'range.last is negative' if last < 0 raise Gem::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 |