OSDN Git Service

fix:aws sdk
[pettanr/pettanr.git] / lib / s3_picture.rb
1 require 'picture_io'
2 class PictureIO
3   class S3Picture
4     @@client = Aws::S3::Client.new
5     
6     def initialize base_dir = 'pettanr'
7       @base = base_dir
8     end
9     
10     def base
11       @base
12     end
13     
14     def base=(b)
15       @base = b
16     end
17     
18     def self.subdirs
19       ['', 'v', 'h', 'vh', 'thumbnail']
20     end
21     
22     def dir(subdir = nil)
23       sd = if subdir.to_s.empty?
24         ''
25       else
26         subdir.to_s + '/'
27       end
28       sd
29     end
30     
31     def exist?(filename, subdir = nil)
32       res = true
33       begin
34         res = @@client.get_object(bucket: self.base, key: dir(subdir) + filename).exist?
35       rescue
36         raise PictureIO::Error
37       end
38       res
39     end
40     
41     def put(bindata, filename, subdir = nil)
42       res = true
43       begin
44         @@client.put_object(bucket: self.base, key: dir(subdir) + filename, body: bindata)
45       rescue
46         raise PictureIO::Error
47       end
48       res
49     end
50     
51     def get(filename, subdir = nil)
52       bindata = ''
53       begin
54         @@client.get_object(bucket: self.base, key: dir(subdir) + filename) do |st|
55           bindata += st if st
56         end
57       rescue
58         raise PictureIO::Error
59       end
60       bindata
61     end
62     
63     def delete(filename, subdir = nil)
64       res = true
65       begin
66         @@client.delete_object(bucket: self.base, key: dir(subdir) + filename)
67       rescue
68         raise PictureIO::Error
69       end
70       res
71   end
72     
73   end
74 end