Method: FormatParser::RemoteIO#read

Defined in:
lib/remote_io.rb

#read(n_bytes) ⇒ String

Emulates IO#read, but requires the number of bytes to read The read will be limited to the size of the remote resource relative to the current offset in the IO, so if you are at offset 0 in the IO of size 10, doing a ‘read(20)` will only return you 10 bytes of result, and not raise any exceptions.

Parameters:

  • n_bytes (Fixnum, nil)

    how many bytes to read, or nil to read all the way to the end

Returns:



70
71
72
73
74
75
76
77
78
# File 'lib/remote_io.rb', line 70

def read(n_bytes)
  http_range = (@pos..(@pos + n_bytes - 1))
  maybe_size, maybe_body = Measurometer.instrument('format_parser.remote_io.read') { request_range(http_range) }
  if maybe_size && maybe_body
    @remote_size = maybe_size
    @pos += maybe_body.bytesize
    maybe_body.force_encoding(Encoding::ASCII_8BIT)
  end
end