class S3Wrapper

Public Class Methods

new(bucket, options={}) click to toggle source
# File lib/s3_wrapper.rb, line 7
def initialize(bucket, options={})
  @bucket = AWS::S3.new(options).buckets[bucket]
  #TODO throw exception if bucket does not exist
  @objects = @bucket.objects
end

Private Class Methods

object_description(obj) click to toggle source
# File lib/s3_wrapper.rb, line 122
def self.object_description(obj)
  "#{obj.key}\t#{obj.last_modified.utc}\t#{obj.content_length / 1024 / 1024} MB"
end

Public Instance Methods

cp() click to toggle source

TODO

# File lib/s3_wrapper.rb, line 91
def cp
end
get(key) click to toggle source
# File lib/s3_wrapper.rb, line 13
def get(key)
  @objects[key].read
end
get_file(key, filename=key) click to toggle source
# File lib/s3_wrapper.rb, line 17
def get_file(key, filename=key)
  File.open(filename, 'w') do |fh|
    @objects[key].read do |chunk|
      fh.write(chunk)
    end
  end
end
ls(key) click to toggle source
# File lib/s3_wrapper.rb, line 34
def ls(key)
  get_object_description(@objects[key]) if @objects[key].exists?
end
ls_if() click to toggle source

TODO

# File lib/s3_wrapper.rb, line 64
def ls_if
end
ls_prefix(key_prefix) click to toggle source
# File lib/s3_wrapper.rb, line 38
def ls_prefix(key_prefix)
  @objects.with_prefix(key_prefix).map {|obj| get_object_description(obj) }
end
ls_regexp(key_regexp) click to toggle source
# File lib/s3_wrapper.rb, line 53
def ls_regexp(key_regexp)
  descriptions = []

  @objects.each do |obj|
    descriptions << get_object_description(obj) if obj.key =~ key_regexp
  end

  descriptions
end
ls_substring(key_substring, key_prefix=nil) click to toggle source
# File lib/s3_wrapper.rb, line 42
def ls_substring(key_substring, key_prefix=nil)
  descriptions = []
  objects = key_prefix ? @objects.with_prefix(key_prefix) : @objects

  objects.each do |obj|
    descriptions << get_object_description(obj) if obj.key =~ /#{key_substring}/
  end

  descriptions
end
mv(src_key, dst_key, dst_bucket=@bucket.name) click to toggle source
# File lib/s3_wrapper.rb, line 67
def mv(src_key, dst_key, dst_bucket=@bucket.name)
  @objects[src_key].move_to(dst_key, :bucket_name => dst_bucket)
end
mv_prefix(src_prefix, dst_bucket) click to toggle source

TODO

# File lib/s3_wrapper.rb, line 72
def mv_prefix(src_prefix, dst_bucket)
  raise_if_dst_bucket_same_as_src(dst_bucket)
end
mv_regexp() click to toggle source

TODO

# File lib/s3_wrapper.rb, line 81
def mv_regexp()
end
mv_substring() click to toggle source

TODO

# File lib/s3_wrapper.rb, line 77
def mv_substring()
end
put(key, data) click to toggle source
# File lib/s3_wrapper.rb, line 25
def put(key, data)
  @objects[key].write(data)
end
put_file(filename, key=nil) click to toggle source
# File lib/s3_wrapper.rb, line 29
def put_file(filename, key=nil)
  key ||= File.basename(filename)
  @objects[key].write(:file => filename)
end
rm(key, options={}) click to toggle source
# File lib/s3_wrapper.rb, line 94
def rm(key, options={})
  @objects[key].delete
end
rm_if(&block) click to toggle source
# File lib/s3_wrapper.rb, line 116
def rm_if(&block)
  @objects.delete_if(&block)
end
rm_prefix(key_prefix) click to toggle source
# File lib/s3_wrapper.rb, line 98
def rm_prefix(key_prefix)
  @objects.with_prefix(key_prefix).each {|obj| obj.delete }
end
rm_regexp(key_regexp) click to toggle source
# File lib/s3_wrapper.rb, line 110
def rm_regexp(key_regexp)
  @objects.each do |obj|
    obj.delete if obj.key =~ key_regexp
  end
end
rm_substring(key_substring, key_prefix=nil) click to toggle source
# File lib/s3_wrapper.rb, line 102
def rm_substring(key_substring, key_prefix=nil)
  objects = key_prefix ? @objects.with_prefix(key_prefix) : @objects

  objects.each do |obj|
    obj.delete if obj.key =~ /#{key_substring}/
  end
end

Private Instance Methods

get_object_description(obj) click to toggle source
# File lib/s3_wrapper.rb, line 126
def get_object_description(obj)
  "#{obj.key}\t#{obj.last_modified.utc}\t#{obj.content_length / 1024 / 1024} MB"
end
raise_if_dst_bucket_same_as_src(dst_bucket) click to toggle source
# File lib/s3_wrapper.rb, line 130
def raise_if_dst_bucket_same_as_src(dst_bucket)
  if dst_bucket == @bucket.name
    raise ArgumentError.new('dst and src bucket are the same')
  end
end