view svc_pbx usage in selfservice, #34836
[freeside.git] / FS / FS / ClientAPI.pm
index 902f58b..e4031b2 100644 (file)
@@ -1,34 +1,41 @@
 package FS::ClientAPI;
 
 use strict;
-use vars qw(%handler $domain $DEBUG);
+use base 'Exporter';
+use vars qw( @EXPORT_OK %handler $domain $DEBUG $me );
 
-$DEBUG = 0;
+@EXPORT_OK = qw( load_clientapi_modules );
+
+$DEBUG = 1;
+$me = '[FS::ClientAPI]';
 
 %handler = ();
 
-#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 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";
+  warn "$me dispatch: calling $sub with args @_\n" if $DEBUG;
   no strict 'refs';
   &{$sub}(@_);
 }