The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Atheme - Perl interface to Atheme's XML-RPC methods


version 0.0001


This class provides an interface to the XML-RPC methods of the Atheme IRC Services.


These are all either virtual or helper methods. They are being implemented in service-specific classes.


Services constructor. Takes a hash as argument: my $svs = new Atheme(url => "http://localhost:8000");

url<string>: URL to Atheme's XML-RPC server.

lang<string>: Language for result strings (en, ...).

validate<boolean>: If 1 then validation should be done in perl already, if 0 then validation is only done in atheme itself. In both cases, atheme validates. If you choose to use the perl validation, you will get more verbose fault messages containing an additional key 'subtype'.


Handles results from RPC Calls!

Here is the list of fault types and default strings (these are likely to be at least partially overridden by Atheme::*Serv classes.

    fault_needmoreparams = "Insufficient parameters."
    fault_badparams      = "Invalid parameters."
    fault_nosuch_source  = "No such source."
    fault_nosuch_target  = "No such target."
    fault_authfail       = "Authentication failed."
    fault_noprivs        = "Insufficient privileges."
    fault_nosuch_key     = "No such key."
    fault_alreadyexists  = "Item already exists."
    fault_toomany        = "Too many items."
    fault_emailfail      = "Email verification failed."
    fault_notverified    = "Action not verified."
    fault_nochange       = "No change."
    fault_already_authed = "You are already authenticated."
    fault_unimplemented  = "Method not implemented."


Method call


A common method used to log into the services in order to execute other methods. Every service inherits this, so you can load just Atheme::MemoServ and log in through that.


A common method used to log out and clean up your authcookie. This should be done, but does not have to be done. This method is also inherited and therefore usable in every *Serv.


Pippijn van Steenhoven <> Stephan Jauernick <>