OSDN Git Service

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