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