AnyEvent-SKKServ

 view release on metacpan or  search on metacpan

script/google-ime-skk.pl  view on Meta::CPAN

my $skkserv = AnyEvent::SKKServ->new(
    port => 55100,
    on_request => sub {
        my ($hdl, $req) = @_;
        $req = $enc->decode($req);

        my $server_found = sub {
            my $val = shift;
            $hdl->push_write(SERVER_FOUND . "/$val/\n");
        };
        my $server_not_found = sub {
            $hdl->push_write(SERVER_NOT_FOUND . "\n");
        };
        my $server_error = sub {
            $hdl->push_write(SERVER_ERROR . "\n");
        };

        # ignore okuri-ari entry
        if ($req =~ /([a-z])$/) {
            $server_not_found->();
            return;
        }

        if (my $val = $cache->get($req)) {
            $server_found->($val);
        } else {
            http_get _uri($req), timeout => 1, sub {
                if ($_[1]->{Status} == 200) {
                    my $res = $json->decode($_[0]);
                    my @words;

script/google-ime-skk.pl  view on Meta::CPAN

                        eval {
                            push @words, $enc->encode($word, Encode::FB_CROAK);
                        };
                    }
                    if (@words) {
                        my $val = join '/', @words;
                        $server_found->($val);

                        $cache->set($req => $val, $expire);
                    } else {
                        $server_not_found->();
                    }
                } else {
                    $server_error->();
                }
            };
        }
    },
);
$skkserv->run;



( run in 0.800 second using v1.01-cache-2.11-cpan-cc502c75498 )