class IntervalResponse::Single

Serves out a response that consists of one HTTP Range, which is always not the entire resource

Public Class Methods

new(interval_sequence, http_range) click to toggle source

@param http_range

# File lib/interval_response/single.rb, line 5
def initialize(interval_sequence, http_range)
  @interval_sequence = interval_sequence
  @http_range = http_range
end

Public Instance Methods

content_length() click to toggle source
# File lib/interval_response/single.rb, line 21
def content_length
  @http_range.end - @http_range.begin + 1
end
each() { |segment, range_in_segment| ... } click to toggle source

Serve the part of the interval map

# File lib/interval_response/single.rb, line 11
def each
  @interval_sequence.each_in_range(@http_range) do |segment, range_in_segment|
    yield(segment, range_in_segment)
  end
end
headers() click to toggle source
# File lib/interval_response/single.rb, line 25
def headers
  c_range = ('bytes %d-%d/%d' % [@http_range.begin, @http_range.end, @interval_sequence.size])
  {
    'Accept-Ranges' => 'bytes',
    'Content-Length' => (@http_range.end - @http_range.begin + 1).to_s,
    'Content-Type' => 'binary/octet-stream',
    'Content-Range' => c_range,
    'ETag' => etag,
  }
end
satisfied_with_first_interval?() click to toggle source
# File lib/interval_response/single.rb, line 36
def satisfied_with_first_interval?
  @interval_sequence.first_interval_only?(@http_range)
end
status_code() click to toggle source
# File lib/interval_response/single.rb, line 17
def status_code
  206
end