class Canistor::Storage::Part

Attributes

bucket[RW]
data[RW]
key[RW]
number[RW]
region[RW]
upload_id[RW]

Public Class Methods

new(**attributes) click to toggle source
# File lib/canistor/storage/part.rb, line 14
def initialize(**attributes)
  attributes.each do |name, value|
    send("#{name}=", value)
  end
end

Public Instance Methods

attributes() click to toggle source
# File lib/canistor/storage/part.rb, line 33
def attributes
  {
    region: region,
    bucket: bucket,
    key: key,
    upload_id: upload_id,
    number: number,
    digest: digest,
    etag: etag
  }
end
etag() click to toggle source
# File lib/canistor/storage/part.rb, line 25
def etag
  '"' + digest + '"'
end
put(context, subject) click to toggle source
# File lib/canistor/storage/part.rb, line 20
def put(context, subject)
  write(context.http_request.body.read)
  context.http_response.signal_headers(200, identity_headers)
end
size() click to toggle source
# File lib/canistor/storage/part.rb, line 29
def size
  data&.size
end

Private Instance Methods

digest() click to toggle source
# File lib/canistor/storage/part.rb, line 53
def digest
  @digest ||= Digest::SHA1.hexdigest(data)
end
identity_headers() click to toggle source
# File lib/canistor/storage/part.rb, line 57
def identity_headers
  {
    'x-amz-request-id' => Base64.strict_encode64(SecureRandom.hex(16)),
    'x-amz-id' => digest[0, 16],
    'x-amz-id-2' => Base64.strict_encode64(digest),
    'etag' => etag
  }
end
write(data) click to toggle source
# File lib/canistor/storage/part.rb, line 49
def write(data)
  self.data = data
end