summaryrefslogtreecommitdiff
path: root/FS/FS/ClientAPI.pm
diff options
context:
space:
mode:
Diffstat (limited to 'FS/FS/ClientAPI.pm')
-rw-r--r--FS/FS/ClientAPI.pm42
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;
+