X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=blobdiff_plain;f=lib%2Fs3_picture.rb;h=0b061579119031de7030e33e703381865b4fc95e;hp=67bb377ca983158b5468aa99c6020c1fce8215c5;hb=d7c8065be895b67dc453b0e11ad0f259f1ca6706;hpb=92e42b345715a552a4ce833b03ec68aed94792e0 diff --git a/lib/s3_picture.rb b/lib/s3_picture.rb index 67bb377c..0b061579 100644 --- a/lib/s3_picture.rb +++ b/lib/s3_picture.rb @@ -1,17 +1,36 @@ require 'picture_io' -require 'aws/s3' class PictureIO + Aws.config.update( + region: Rails.application.secrets.aws_region, + credentials: Aws::Credentials.new( + Rails.application.secrets.aws_access_key_id, + Rails.application.secrets.aws_secret_access_key + ) + ) class S3Picture - def initialize base_dir = 'pettanr' - @base = base_dir + @@client = Aws::S3::Client.new + + def initialize host_dir = 'pettanr', base_dir = '' + @host_dir = host_dir + @base_dir = base_dir + s3 = Aws::S3::Resource.new + @bucket = s3.bucket(@host_dir) + end + + def self.client + @@client + end + + def bucket + @bucket end - def base - @base + def host_dir + @host_dir end - def base=(b) - @base = b + def host_dir=(d) + @host_dir = d end def self.subdirs @@ -24,13 +43,13 @@ class PictureIO else subdir.to_s + '/' end - sd + @base_dir + '/' + sd end def exist?(filename, subdir = nil) res = true begin - res = AWS::S3::S3Object.exist?(dir(subdir) + filename, base) + res = self.bucket.object(dir(subdir) + filename).exists? rescue raise PictureIO::Error end @@ -40,7 +59,7 @@ class PictureIO def put(bindata, filename, subdir = nil) res = true begin - AWS::S3::S3Object.store(dir(subdir) + filename, bindata, base) + @@client.put_object(bucket: self.host_dir, key: dir(subdir) + filename, body: bindata) rescue raise PictureIO::Error end @@ -50,7 +69,7 @@ class PictureIO def get(filename, subdir = nil) bindata = '' begin - AWS::S3::S3Object.stream(dir(subdir) + filename, base) do |st| + @@client.get_object(bucket: self.host_dir, key: dir(subdir) + filename) do |st| bindata += st if st end rescue @@ -62,7 +81,7 @@ class PictureIO def delete(filename, subdir = nil) res = true begin - AWS::S3::S3Object.delete(dir(subdir) + filename, base) + @@client.delete_object(bucket: self.host_dir, key: dir(subdir) + filename) rescue raise PictureIO::Error end