class Glima::DataStore
Public Class Methods
new(basedir)
click to toggle source
# File lib/glima/datastore.rb, line 7 def initialize(basedir) unless basedir and File.directory?(File.expand_path(basedir.to_s)) raise Glima::ConfigurationError, "datastore directory '#{basedir}' not found" end @basedir = Pathname.new(File.expand_path(basedir)) unless Dir.exist?(dir = File.expand_path("all", @basedir)) FileUtils.mkdir_p(dir) end end
Public Instance Methods
exist?(message_id)
click to toggle source
# File lib/glima/datastore.rb, line 40 def exist?(message_id) File.exist?(folder_message_to_path("+all", message_id)) end
load(message)
click to toggle source
# File lib/glima/datastore.rb, line 35 def load(message) path = folder_message_to_path("+all", message.id) return File.open(path).read end
save(message)
click to toggle source
# File lib/glima/datastore.rb, line 28 def save(message) path = folder_message_to_path("+all", message.id) File.open(path, "w") do |f| f.write(message.raw.gsub("\r\n", "\n")) end end
update(message)
click to toggle source
# File lib/glima/datastore.rb, line 19 def update(message) if message.raw save(message) else message.raw = load(message) end return message end
Private Instance Methods
folder_message_to_path(folder, message_id = nil)
click to toggle source
# File lib/glima/datastore.rb, line 67 def folder_message_to_path(folder, message_id = nil) folder = folder.sub(/^\+/, "") directory = File.expand_path(folder, @basedir) return directory unless message_id return File.expand_path(message_id + ".eml", directory) end
folder_to_directory(folder)
click to toggle source
# File lib/glima/datastore.rb, line 47 def folder_to_directory(folder) folder = folder.sub(/^\+/, "") File.expand_path(folder, @basedir) end
save_message_in_id(message, folder)
click to toggle source
# File lib/glima/datastore.rb, line 52 def save_message_in_id(message, folder) directory = folder_to_directory(folder) raise "Error: #{directory} not exist" unless File.exist?(directory) # name = message.thread_id + "-" + message.id name = message.id + ".eml" filename = File.expand_path(name, directory) File.open(filename, "w") do |f| f.write(message.raw.gsub("\r\n", "\n")) end return message.id end