3 use base qw(Gearman::Driver::Worker);
6 use Data::Dump qw(dump);
12 require RPC::XML::Client;
16 #$RPC::XML::ENCODING = "utf-8"; # FIXME really used?
21 my ( $self, $orig, $job_name ) = @_;
22 warn "# process_name $orig $job_name\n";
23 return "$orig ($job_name)";
27 my ( $self, $job, $workload ) = @_;
28 warn "# begin ", dump( $workload );
31 sub search : Job : Encode(e_json_encode) {
32 my ( $self, $job, $workload ) = @_;
33 warn "# search ",dump($workload);
35 my $field = 'USERNAME';
36 my $value = '%' . $workload . '%';
37 ($field,$value) = split(/[:=]/,$workload,2) if $workload =~ m/[:=]/;
39 my $cli = RPC::XML::Client->new($self->config('crmxml'));
40 warn "RPC::XML $field $value";
41 my $resp = $cli->send_request('search',RPC::XML::array->new( $field => $value ));
43 my $redis = Redis->new;
45 my $key = 'CRM.' . $_->{USERNAME};
46 $redis->set( $key => $self->e_json($_) );
47 $redis->expire( $key => 15 * 60 );
48 } @{ $resp->value->[0] };
50 return ref $resp ? $resp->value->[0] : { error => $resp };
54 my ($self,$data) = @_;
55 my $json = $self->e_json($data);
56 $json = Encode::decode('utf-8', $json);
57 Encode::from_to($json,'cp1250', 'utf-8');