OSDN Git Service

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