Clean up user/domain describing in the plugins.
[mailshears.git] / lib / common / agendav_plugin.rb
index fad869f95235964884d58635a465d670cde7b455..032d057c24d8e25c899ea672ae5fca50a711a8ff 100644 (file)
@@ -1,4 +1,5 @@
 require 'common/plugin'
+require 'common/user'
 
 module AgendavPlugin
   # Code that all Agendav plugins (Prune, Rm, Mv...) will
@@ -6,8 +7,7 @@ module AgendavPlugin
   include Plugin
 
 
-  def initialize()
-    cfg = Configuration.new()
+  def initialize(cfg)
     @db_host = cfg.agendav_dbhost
     @db_port = cfg.agendav_dbport
     @db_opts = cfg.agendav_dbopts
@@ -18,30 +18,12 @@ module AgendavPlugin
   end
 
 
-  def describe_domain(domain)
-    # AgenDAV doesn't have a concept of domains.
-    return 'N/A'
-  end
-
-
-  def describe_account(account)
-    if self.user_exists(account)
-      return "Username: #{account}"
-    else
-      return 'User not found'
-    end
-  end
-
-
-  protected;
-
-  def user_exists(account)
-    ad_users = get_agendav_usernames()
-    return ad_users.include?(account)
-  end
-
-  def get_agendav_usernames()
-    usernames = []
+  def list_users()
+    #
+    # Produce a list of AgenDAV users. This is public because it's
+    # useful in testing.
+    #
+    users = []
 
     # Just assume PostgreSQL for now.
     begin
@@ -58,7 +40,7 @@ module AgendavPlugin
       sql_query += '(SELECT user_from FROM shared);'
 
       connection.query(sql_query) do |result|
-        usernames = result.field_values('username')
+        users = result.field_values('username')
       end
 
       connection.close()
@@ -67,7 +49,7 @@ module AgendavPlugin
       raise DatabaseError.new(e)
     end
 
-    return usernames
+    return users.map{ |u| User.new(u) }
   end
 
 end