From: Dobrica Pavlinusic Date: Sun, 10 Jul 2011 20:53:52 +0000 (+0200) Subject: fetch (LDAP|CRM)_search from redis X-Git-Url: http://git.rot13.org/?p=APKPM.git;a=commitdiff_plain;h=58b4d2a9e1f08c7bd3f0b1f7d27e427c74153818 fetch (LDAP|CRM)_search from redis --- diff --git a/web_ui.pl b/web_ui.pl index f449db5..4dbef87 100755 --- a/web_ui.pl +++ b/web_ui.pl @@ -8,6 +8,8 @@ use MojoX::Gearman; use lib 'lib'; use APKPM::Model; +use Redis; +use Encode; use Data::Dump qw(dump); @@ -54,9 +56,22 @@ sub _render_jsonp { get '/g/:call/:args' => [ args => qr/.*/ ] => sub { my $self = shift; - my $ret = $gearman->req( 'SUBMIT_JOB', $self->param('call'), '', $self->param('args') ); - warn $self->param('call'), " = ", dump($ret), "\n"; - die "no result for ", $self->param('call'), ' args: ', $self->param('args') unless defined $ret; + + my $call = $self->param('call'); + my $args = $self->param('args'); + + if ( $call =~ m/^(LDAP|CRM)_search/ ) { + my $k = $1 . '.*' . $args . '*'; + my $redis = Redis->new; + if ( my @k = $redis->keys( $k ) ) { + my $ret = join(',', map { $redis->get($_) } @k ); + return _render_jsonp( $self, "[$ret]" ); + } + } + + my $ret = $gearman->req( 'SUBMIT_JOB', $call, '', $args ); + warn "$call = ", dump($ret), "\n"; + die "no result for $call args: $args" unless defined $ret; _render_jsonp( $self, $ret ); };