diff options
Diffstat (limited to 'FS/FS/ClientAPI.pm')
-rw-r--r-- | FS/FS/ClientAPI.pm | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/FS/FS/ClientAPI.pm b/FS/FS/ClientAPI.pm new file mode 100644 index 0000000..1677fcc --- /dev/null +++ b/FS/FS/ClientAPI.pm @@ -0,0 +1,42 @@ +package FS::ClientAPI; + +use strict; +use base 'Exporter'; +use vars qw( @EXPORT_OK %handler $domain $DEBUG ); + +@EXPORT_OK = qw( load_clientapi_modules ); + +$DEBUG = 0; + +%handler = (); + +sub load_clientapi_modules { + + #find modules + foreach my $INC ( @INC ) { + my $glob = "$INC/FS/ClientAPI/*.pm"; + warn "FS::ClientAPI: searching $glob" if $DEBUG; + foreach my $file ( glob($glob) ) { + $file =~ /\/(\w+)\.pm$/ or do { + warn "unrecognized ClientAPI file: $file"; + next + }; + my $mod = $1; + warn "using FS::ClientAPI::$mod" if $DEBUG; + eval "use FS::ClientAPI::$mod;"; + die "error using FS::ClientAPI::$mod: $@" if $@; + } + } + +} + +sub dispatch { + my ( $self, $name ) = ( shift, shift ); + $name =~ s(/)(::)g; + my $sub = "FS::ClientAPI::$name"; + no strict 'refs'; + &{$sub}(@_); +} + +1; + |