HTTP::Engine::Middleware

HTTP::Engine::Middleware
http://coderepos.org/share/browser/lang/perl/HTTP-Engine-Middleware/branches/functional/

wrapでrequest_handlerをwrapしていく感じ。後はrequestにメソッド生やす系。
組み立て部分は、以下の部分。

App/Mobirc/Plugin/Component/HTTPD.pm

    my $request_handler = App::Mobirc::Web::Middleware::Encoding->wrap( \&App::Mobirc::Web::Handler::handler );
    for my $mw ( @{ $self->middlewares } ) { 
      $mw->require or die $@; 
      $request_handler = $mw->wrap($request_handler);
    }

後は、HTTP::Engineにrequest_handler渡すだけと。なるほど、こういうwrapの仕方もあるなぁと。

# HTTP::Engine::MiddlewareはHTTP::Engineのcontextなし版でなかったりmouse版でもないので、HTTP::EngineのコアからMiddlewareを外す場合には、HTTPx::Middlewareとかの置き場所があるといいですね。