]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - lib/common/davical_plugin.rb
Pass a Configuration object to each plugin's initialize().
[mailshears.git] / lib / common / davical_plugin.rb
index e4bef48ac41239f49b7aa3656adbce782f25bd00..afd1d883e66115c32964fb9f9cd61f58c0622a93 100644 (file)
@@ -5,8 +5,7 @@ module DavicalPlugin
   # is, we implement the Plugin interface.
   include Plugin
 
-  def initialize()
-    cfg = Configuration.new()
+  def initialize(cfg)
     @db_host = cfg.davical_dbhost
     @db_port = cfg.davical_dbport
     @db_opts = cfg.davical_dbopts
@@ -19,7 +18,7 @@ module DavicalPlugin
 
   def describe_domain(domain)
     # DAViCal doesn't have a concept of domains.
-    return 'N/A'
+    return domain
   end
 
 
@@ -70,4 +69,32 @@ module DavicalPlugin
   end
 
 
+  def list_users()
+    usernames = []
+
+    begin
+      connection = PGconn.connect(@db_host,
+                                  @db_port,
+                                  @db_opts,
+                                  @db_tty,
+                                  @db_name,
+                                  @db_user,
+                                  @db_pass)
+
+      # User #1 is the super-user, and not tied to an email address.
+      sql_query =  "SELECT username FROM usr WHERE user_no > 1"
+
+      connection.query(sql_query) do |result|
+        usernames = result.field_values('username')
+      end
+
+      connection.close()
+    rescue PGError => e
+      # Pretend like we're database-agnostic in case we ever are.
+      raise DatabaseError.new(e)
+    end
+
+    return usernames
+  end
+
 end