modify schema for new CPE stats
[APKPM.git] / lib / APKPM / CRM.pm
index 7396b5f..1643c9b 100644 (file)
@@ -3,15 +3,16 @@ package APKPM::CRM;
 use base qw(Gearman::Driver::Worker);
 use Moose;
 use Time::HiRes;
-use JSON::XS;
 use Data::Dump qw(dump);
 
 with 'APKPM::Config';
+with 'APKPM::Gearman';
 
 require RPC::XML;
 require RPC::XML::Client;
+use Encode;
 
-$RPC::XML::ENCODING = "utf-8"; # FIXME really used?
+#$RPC::XML::ENCODING = "utf-8"; # FIXME really used?
 
 sub prefix { 'CRM_' }
 
@@ -26,20 +27,25 @@ sub begin {
        warn "# begin ", dump( $workload );
 }
 
-sub username : Job : MinProcesses(1) : MaxProcesses(5) : Encode {
+sub search : Job : Encode(e_json_encode) {
        my ( $self, $job, $workload ) = @_;
-       warn "# username ",dump($workload);
+       warn "# search ",dump($workload);
+
+       my $field = 'USERNAME';
+       my $value = '%' . $workload . '%';
+       ($field,$value) = split(/[:=]/,$workload,2) if $workload =~ m/[:=]/;
+
        my $cli = RPC::XML::Client->new($self->config('crmxml'));
-       my $resp = $cli->send_request('search',RPC::XML::array->new(
-               USERNAME => '%' . $workload . '%'
-       ));
+       warn "RPC::XML $field $value";
+       my $resp = $cli->send_request('search',RPC::XML::array->new( $field => $value ));
        return ref $resp ? $resp->value->[0] : { error => $resp };
 }
 
-sub encode {
-       my ( $self, $result ) = @_;
-       my $json = JSON::XS::encode_json($result);
-       warn "## ", dump $json;
+sub e_json_encode {
+       my ($self,$data) = @_;
+       my $json = $self->e_json($data);
+       $json = Encode::decode('utf-8', $json);
+       Encode::from_to($json,'cp1250', 'utf-8');
        return $json;
 }