class S3::Request

Class responsible for sending chunked requests properly. Net::HTTPGenericRequest has hardcoded chunk_size, so we inherit the class and override chunk_size.

Public Class Methods

new(chunk_size, m, reqbody, resbody, path, initheader = nil) click to toggle source
Calls superclass method
# File lib/s3/request.rb, line 6
def initialize(chunk_size, m, reqbody, resbody, path, initheader = nil)
  @chunk_size = chunk_size
  super(m, reqbody, resbody, path, initheader)
end

Private Instance Methods

send_request_with_body_stream(sock, ver, path, f) click to toggle source
# File lib/s3/request.rb, line 13
def send_request_with_body_stream(sock, ver, path, f)
  unless content_length() or chunked?
    raise ArgumentError, "Content-Length not given and Transfer-Encoding is not `chunked'"
  end
  supply_default_content_type
  write_header sock, ver, path
  if chunked?
    while s = f.read(@chunk_size)
      sock.write(sprintf("%x\r\n", s.length) << s << "\r\n")
    end
    sock.write "0\r\n\r\n"
  else
    while s = f.read(@chunk_size)
      sock.write s
    end
  end
end