so Search.tsf and Search.rdf work
[freeside.git] / FS / FS / ClientAPI.pm
index f7b8eb0..902f58b 100644 (file)
@@ -1,42 +1,35 @@
 package FS::ClientAPI;
 
 use strict;
-use vars qw(%handler);
+use vars qw(%handler $domain $DEBUG);
+
+$DEBUG = 0;
 
 %handler = ();
 
 #find modules
 foreach my $INC ( @INC ) {
-  foreach my $file ( glob("$INC/FS/ClientAPI/*") ) {
+  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";
+    warn "using FS::ClientAPI::$mod" if $DEBUG;
     eval "use FS::ClientAPI::$mod;";
     die "error using FS::ClientAPI::$mod: $@" if $@;
   }
 }
 
-#(sub for modules)
-sub register_handlers {
-  my $self = shift;
-  my %new_handlers = @_;
-  foreach my $key ( keys %new_handlers ) {
-    warn "WARNING: redefining sub $key" if exists $handler{$key};
-    #warn "registering $key";
-    $handler{$key} = $new_handlers{$key};
-  }
-}
-
 #---
 
 sub dispatch {
   my ( $self, $name ) = ( shift, shift );
-  my $sub = $handler{$name}
-    or die "unknown FS::ClientAPI sub $name (known: ". join(" ", keys %handler );
-    #or die "unknown FS::ClientAPI sub $name";
+  $name =~ s(/)(::)g;
+  my $sub = "FS::ClientAPI::$name";
+  no strict 'refs';
   &{$sub}(@_);
 }