]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - src/dovecot_mailstore.rb
Added three new error classes: InvalidAccountError, NonexistentAccountError, and...
[mailshears.git] / src / dovecot_mailstore.rb
index a794032c246d3c171a33193ab56c1cc823429cec..430c8e44bd3ec81863ac6e8e5fb3cf8a74c9edee 100644 (file)
@@ -12,15 +12,40 @@ class DovecotMailstore < Mailstore
     accounts = []
 
     domains.each do |domain|
-      domain_path = File.join(@domain_root, domain)
-      usernames = Filesystem.get_subdirs(domain_path)
+      domain_path = get_domain_path(domain)
 
-      usernames.each do |username|
-        accounts << "#{username}@#{domain}"
+      if File.directory?(domain_path)
+        # If domain_path isn't a directory, maybe the
+        # domain folder doesn't exist? In that case, I
+        # guess we want to report zero accounts.
+        usernames = Filesystem.get_subdirs(domain_path)
+
+        usernames.each do |username|
+          accounts << "#{username}@#{domain}"
+        end
       end
     end
 
     return accounts
   end
 
+
+  def get_domain_path(domain)
+    # Return the filesystem path for the given domain.
+    # That is, the directory where its mail is stored.
+    domain_path = File.join(@domain_root, domain)
+    return domain_path
+  end
+
+
+  def get_account_path(account)
+    # Return the filesystem path of this account's mailbox.
+    account_parts = account.split('@')
+    user_part = account_parts[0]
+    domain_part = account_parts[1]
+
+    domain_path = get_domain_path(domain_part)
+    account_path = File.join(domain_path, user_part)
+  end
+
 end