class S3diff::S3File

Public Class Methods

new(s3_uri, s3_client) click to toggle source
# File lib/s3diff/s3_file.rb, line 6
def initialize(s3_uri, s3_client)
  @s3c = s3_client
  @uri = s3_uri
end

Public Instance Methods

etag() click to toggle source
# File lib/s3diff/s3_file.rb, line 11
def etag
  head.etag.delete(%(")) if exist?
end
exist?() click to toggle source
# File lib/s3diff/s3_file.rb, line 27
def exist?
  !head.nil?
end
original_path() click to toggle source
# File lib/s3diff/s3_file.rb, line 23
def original_path
  @uri
end
path() click to toggle source
# File lib/s3diff/s3_file.rb, line 19
def path
  cache_file.path
end
size() click to toggle source
# File lib/s3diff/s3_file.rb, line 15
def size
  head.content_length if exist?
end

Private Instance Methods

cache_file() click to toggle source
# File lib/s3diff/s3_file.rb, line 41
def cache_file
  @cache_file ||= begin
    f = Tempfile.new("")
    @s3c.get_object(@uri, f) if exist?
    f.flush
    f
  end
end
head() click to toggle source
# File lib/s3diff/s3_file.rb, line 33
def head
  @head ||= begin
    @s3c.head_object(@uri)
  rescue Aws::S3::Errors::NotFound
    nil
  end
end