Module: AgendavPlugin
Overview
Code that all Agendav plugins (AgendavPrune, AgendavRm, AgendavMv) share.
Instance Method Summary collapse
-
#count_shares ⇒ Fixnum
Count the number of rows in the “shares” table.
-
#initialize(cfg) ⇒ Object
Initialize this Agendav Plugin with values in cfg.
-
#list_users ⇒ Array<User>
Return a list of Agendav users.
Methods included from Plugin
#describe, #describe_domain, #describe_user, #domain_exists, #list_domains, #list_domains_users, #user_exists
Instance Method Details
#count_shares ⇒ Fixnum
Count the number of rows in the “shares” table. Used only for testing.
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/common/agendav_plugin.rb', line 61 def count_shares() count = nil connection = PG::Connection.new(@db_hash) sql_query = 'SELECT count(*) FROM shares;' begin connection.sync_exec(sql_query) do |result| count = result.getvalue(0,0).to_i() end ensure # Make sure the connection gets closed even if the query explodes. connection.close() end return count end |
#initialize(cfg) ⇒ Object
Initialize this Agendav Plugin with values in cfg.
16 17 18 19 20 21 22 23 24 |
# File 'lib/common/agendav_plugin.rb', line 16 def initialize(cfg) @db_hash = { :host => cfg.agendav_dbhost, :port => cfg.agendav_dbport, :options => cfg.agendav_dbopts, :dbname => cfg.agendav_dbname, :user => cfg.agendav_dbuser, :password => cfg.agendav_dbpass } end |
#list_users ⇒ Array<User>
Return a list of Agendav users.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/common/agendav_plugin.rb', line 32 def list_users() users = [] connection = PG::Connection.new(@db_hash) # There are also "owner" and "with" fields in the "shares" table, # but they contains principal URLs and not a bare username. Thus # their format depends on the CalDAV server configuration, and # isn't predictable. sql_query = 'SELECT username FROM prefs;' begin connection.sync_exec(sql_query) do |result| users = result.field_values('username') end ensure # Make sure the connection gets closed even if the query explodes. connection.close() end return users.map{ |u| User.new(u) } end |