use RPC::XML directly
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 12 Mar 2011 13:00:25 +0000 (14:00 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 12 Mar 2011 13:00:25 +0000 (14:00 +0100)
lib/APKPM/CRM.pm

index 36b416b..344399d 100644 (file)
@@ -6,11 +6,12 @@ use Time::HiRes;
 use JSON::XS;
 use Data::Dump qw(dump);
 
-our $crmxml;
-require "/opt/managment_tools/etc/config.pl";
+has 'crmxml' => ( isa => 'Str', is => 'ro', default => 'http://192.168.5.22/nms/ws.php' );
 
-use lib '/opt/managment_tools/lib';
-use H1::CRM;
+require RPC::XML;
+require RPC::XML::Client;
+
+$RPC::XML::ENCODING = "utf-8"; # FIXME really used?
 
 sub prefix { 'CRM_' }
 
@@ -20,19 +21,26 @@ sub process_name {
        return "$orig ($job_name)";
 }
 
-my $crm = H1::CRM->new($crmxml);
+sub begin {
+       my ( $self, $job, $workload ) = @_;
+       warn "# begin ", dump( $workload );
+}
 
 sub username : Job : MinProcesses(1) : MaxProcesses(5) : Encode {
        my ( $self, $job, $workload ) = @_;
        warn "# username ",dump($workload);
-       my @out = $crm->search({ USERNAME => '%' . $workload . '%' });
-       warn "# out = ",dump(@out);
-       return shift @out;
+       my $cli = RPC::XML::Client->new($self->crmxml);
+       my $resp = $cli->send_request('search',RPC::XML::array->new(
+               USERNAME => '%' . $workload . '%'
+       ));
+       return ref $resp ? $resp->value->[0] : { error => $resp };
 }
 
 sub encode {
        my ( $self, $result ) = @_;
-       return JSON::XS::encode_json($result);
+       my $json = JSON::XS::encode_json($result);
+       warn "## ", dump $json;
+       return $json;
 }
 
 1;