X-Git-Url: http://gitweb.michael.orlitzky.com/?p=mailshears.git;a=blobdiff_plain;f=lib%2Frm%2Frm_plugin.rb;h=fd0c541a44cb25ed7ffbe7e96db3c19b59426265;hp=0c155a18f9441521d1ee3a6c9445927c19bd022a;hb=aebdf12adce2766e2957f88916fcae6374d4eb4b;hpb=ec3c9099a29f40d95f055ea0f7fb25a99d913de3 diff --git a/lib/rm/rm_plugin.rb b/lib/rm/rm_plugin.rb index 0c155a1..fd0c541 100644 --- a/lib/rm/rm_plugin.rb +++ b/lib/rm/rm_plugin.rb @@ -1,27 +1,48 @@ +require 'common/plugin.rb' + module RmPlugin # - # Plugins for the removal of accounts. + # Plugins for the removal of users. # - def delete_domain(domain) - # Delete the given domain. - raise NotImplementedError + extend Plugin::Run + + def self.runner() + return RmRunner end - def delete_account(account) - # Delete the given account. - raise NotImplementedError + def self.dummy_runner() + return RmDummyRunner end - def get_leftover_domains(db_domains) - # Given a list of domains, determine which domains belonging to - # this plugin are not contained in the given list. - raise NotImplementedError + def delete(target) + # A generic version of delete_user/delete_domain that + # dispatches base on the class of the target. + if target.is_a?(User) + return delete_user(target) + elsif target.is_a?(Domain) + return delete_domain(target) + else + raise NotImplementedError + end end - def get_leftover_accounts(db_accounts) - # Given a list of accounts, determine which accounts belonging to - # this plugin are not contained in the given list. + def delete_domain(domain) + # Delete the given domain. Some plugins don't have a concept of + # domains, so just delete all users with a username that looks + # like it's in the given domain. + users = list_domains_users([domain]) + + raise NonexistentDomainError.new(domain.to_s()) if users.empty? + + users.each do |u| + delete_user(u) + end + end + + def delete_user(user) + # Delete the given user. raise NotImplementedError end + end