]> 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 187b6b0dbfad083f5533b86916c099997d29a948..430c8e44bd3ec81863ac6e8e5fb3cf8a74c9edee 100644 (file)
@@ -3,21 +3,49 @@ require 'src/mailstore'
 
 class DovecotMailstore < Mailstore
 
-  def get_accounts_from_filesystem()
+  def get_domains_from_filesystem()
+    return Filesystem.get_subdirs(@domain_root)
+  end
+
+
+  def get_accounts_from_filesystem(domains)
     accounts = []
-  
-    domains = Filesystem.get_subdirs(@domain_root)
-  
+
     domains.each do |domain|
-      domain_path = File.join(@domain_root, domain)
-      usernames = Filesystem.get_subdirs(domain_path)
-      
-      usernames.each do |username|
-        accounts << "#{username}@#{domain}"
+      domain_path = get_domain_path(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