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