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.349 second using v1.01-cache-2.11-cpan-4d4bc49f3ae )