class AWSRaw::S3::HTTPRequestBuilder

Attributes

s3_request[R]

Public Class Methods

new(s3_request) click to toggle source
# File lib/awsraw/s3/http_request_builder.rb, line 7
def initialize(s3_request)
  @s3_request = s3_request
end

Public Instance Methods

build() click to toggle source
# File lib/awsraw/s3/http_request_builder.rb, line 11
def build
  klass = http_request_class(s3_request)
  path  = s3_request.uri.request_uri

  klass.new(path).tap do |http_request|
    s3_request.headers.each do |name, value|
      http_request[name] = value
    end
    set_content_on_request(http_request, s3_request.content)
  end
end

Private Instance Methods

http_request_class(s3_request) click to toggle source
# File lib/awsraw/s3/http_request_builder.rb, line 25
def http_request_class(s3_request)
  case s3_request.method
    when "GET"
      Net::HTTP::Get
    when "HEAD"
      Net::HTTP::Head
    when "PUT"
      Net::HTTP::Put
    when "POST"
      Net::HTTP::Post
    else
      raise "Invalid HTTP method!"
  end
end
set_content_on_request(http_request, content) click to toggle source
# File lib/awsraw/s3/http_request_builder.rb, line 40
def set_content_on_request(http_request, content)
  if content.is_a?(File)
    http_request.body_stream = content
    http_request['Content-Length'] = content.size.to_s
  else
    http_request.body = content
  end
end