Class: Hem::Lib::S3::Remote::IoHandler

Inherits:
Object
  • Object
show all
Includes:
Hem::Logging
Defined in:
lib/hem/lib/s3/remote/iohandler.rb

Instance Method Summary collapse

Methods included from Hem::Logging

#logger, logger

Constructor Details

#initialize(s3, bucket, prefix) ⇒ IoHandler

Returns a new instance of IoHandler.



8
9
10
11
12
# File 'lib/hem/lib/s3/remote/iohandler.rb', line 8

def initialize s3, bucket, prefix
  @s3 = s3
  @bucket = bucket
  @prefix = prefix ? "#{prefix.gsub(/^\//, '').chomp('/')}/" : ""
end

Instance Method Details

#lsObject



14
15
16
17
18
19
20
21
22
23
# File 'lib/hem/lib/s3/remote/iohandler.rb', line 14

def ls
  out = {}
  logger.debug("s3sync: Listing remote bucket: #{@bucket} w/ prefix #{@prefix}")
  @s3.bucket(@bucket).objects(:prefix => @prefix).each do |file|
    filename = file.key.gsub(/^#{@prefix}/, '')
    next if filename == ""
    out[filename] = file.etag.gsub('"', '')
  end
  return out
end

#open(file, mode) ⇒ Object



25
26
27
28
# File 'lib/hem/lib/s3/remote/iohandler.rb', line 25

def open file, mode
  s3_key = ::File.join(@prefix, file)
  File.new @s3.bucket(@bucket).object(s3_key), @prefix
end

#rm(file) ⇒ Object



30
31
32
33
# File 'lib/hem/lib/s3/remote/iohandler.rb', line 30

def rm file
  s3_key = ::File.join(@prefix, file)
  @s3.bucket(@bucket).object(s3_key).delete
end