jwatch.jpをHTTP::Engineで

いまはペライチなのでぐちゃっと書いてみる。

Wide character in print at /usr/lib/perl5/site_perl/5.8.8/HTTP/Engine/ResponseWriter.pm line 68, <DATA> line 16.
 60 sub _write {
 61     my($self, $buffer) = @_;
 62 
 63     unless ( $self->{_prepared_write} ) {
 64         $self->_prepare_write;
 65         $self->{_prepared_write} = 1;
 66     }
 67 
 68     print STDOUT $buffer;
 69 }

→なんか普通にEncode祭りか。→動いてないけどとりあえずコミった。→ http://coderepos.org/share/browser/websites/jwatch.jp/trunk/misc/jwatch_http-engine.pl?rev=11858 → こんなんでいいんかな?→面倒なのでname_i18nで逃げる。→String::TTの使い方をなんとかする。→わかったわかった!→http://coderepos.org/share/browser/websites/jwatch.jp/trunk/misc/jwatch_http-engine.pl?rev=11874 → うごいたうごいた! utf8関連はどうすっかな。→String::TTはいいなぁ。→middlewareでやれと言われたのでmiddlewareで何ができるのか勉強する → HTTP::Engineでは

 31 sub load_middleware {
 32     my ($class, $middleware) = @_;
 33 
 34     require UNIVERSAL::require;
 35 
 36     my $pkg;
 37     if (($pkg = $middleware) =~ s/^(\+)//) {
 38         $pkg->require or die $@;
 39     } else {
 40         $pkg = 'HTTP::Engine::Middleware::' . $middleware;
 41         unless ($pkg->require) {
 42             $pkg = 'HTTPEx::Middleware::' . $middleware;
 43             $pkg->require or die $@;
 44         }
 45     }
 46 
 47     if ($pkg->meta->has_method('setup')) {
 48         $pkg->setup();
 49     }
 50 
 51     if ($pkg->meta->has_method('wrap')) {
 52         HTTP::Engine::RequestProcessor->meta->add_around_method_modifier(
 53             call_handler => $pkg->meta->get_method('wrap')->body
 54         );
 55     }
 56 }

→などと言っていたらかんかんのMiddleware::Encodeがはじまった!→出力時のencodeもしてくれるらしい!→そうすると↓これもなおるらしい。

Wide character in print at /usr/lib/perl5/site_perl/5.8.8/HTTP/Engine/ResponseWriter.pm line 68, <DATA> line 16.

→今のバージョンで一応日本語の出力も無問題。↑これは出るけど→H::E::Interface::ModPerlができたら入れ替えよう。