class Fog::AWS::Glacier::Archive

Attributes

multipart_chunk_size[RW]

Public Instance Methods

destroy() click to toggle source
# File lib/fog/aws/models/glacier/archive.rb, line 27
def destroy
  requires :id
  service.delete_archive(vault.id,id)
end
save() click to toggle source
# File lib/fog/aws/models/glacier/archive.rb, line 15
def save
  requires :body, :vault

  if multipart_chunk_size && body.respond_to?(:read)
    self.id = multipart_save
  else
    data = service.create_archive(vault.id, body, 'description' => description)
    self.id = data.headers['x-amz-archive-id']
  end
  true
end
vault() click to toggle source
# File lib/fog/aws/models/glacier/archive.rb, line 11
def vault
  @vault
end

Private Instance Methods

multipart_save() click to toggle source
# File lib/fog/aws/models/glacier/archive.rb, line 38
def multipart_save
  # Initiate the upload
  res = service.initiate_multipart_upload vault.id, multipart_chunk_size, 'description' => description
  upload_id = res.headers["x-amz-multipart-upload-id"]

  hash = Fog::AWS::Glacier::TreeHash.new

  if body.respond_to?(:rewind)
    body.rewind  rescue nil
  end
  offset = 0
  while (chunk = body.read(multipart_chunk_size)) do
    part_hash = hash.add_part(chunk)
    part_upload = service.upload_part(vault.id, upload_id, chunk, offset, part_hash  )
    offset += chunk.bytesize
  end

rescue
  # Abort the upload & reraise
  service.abort_multipart_upload(vault.id, upload_id) if upload_id
  raise
else
  # Complete the upload
  service.complete_multipart_upload(vault.id, upload_id, offset, hash.hexdigest).headers['x-amz-archive-id']
end
vault=(new_vault) click to toggle source
# File lib/fog/aws/models/glacier/archive.rb, line 34
def vault=(new_vault)
  @vault = new_vault
end