OSDN Git Service

t#:
[pettanr/pettanr.git] / lib / local_picture.rb
1 require 'picture_io'
2 class PictureIO
3   class LocalPicture
4     def initialize base_dir = Rails.root + 'public/images/'
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 dir(subdir = nil)
17       sd = if subdir.to_s.empty?
18         self.base
19       else
20         self.base + (subdir.to_s + '/')
21       end
22       sd
23     end
24     
25     def mkdir subdir = nil
26       Dir.mkdir(base) unless File.exist?(base)
27       return if subdir.to_s.empty?
28       Dir.mkdir(dir(subdir)) unless File.exist?(dir(subdir))
29     end
30     
31     def exist?(filename, subdir = nil)
32       res = true
33       begin
34         res = File.exist?(dir(subdir) + filename)
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         mkdir subdir
45         File.open(dir(subdir) + filename, 'wb') do |f|
46           f.write bindata
47         end
48       rescue
49         raise PictureIO::Error
50       end
51       res
52     end
53     
54     def get(filename, subdir = nil)
55       bindata = ''
56       begin
57         File.open(dir(subdir) + filename, 'rb') do |f|
58           bindata += f.read
59         end
60       rescue
61         raise PictureIO::Error
62       end
63       bindata
64     end
65     
66     def delete(filename, subdir = nil)
67       res = true
68       begin
69         File.delete(dir(subdir) + filename)
70       rescue
71         raise PictureIO::Error
72       end
73       res
74     end
75     
76   end
77 end