Amon2::Plugin::Web::Woothee 書いたよ
去年の11月に開催された Shibuya Plack/PSGI Conference #1 の時にネタ探してて見つけた Plack::Middleware::Woothee というモジュールがありまして、これは Plack のミドルウェア層で User Agent を Woothee でホゲホゲしておくモジュールなわけですが、PSGI の env に psgix.woothee
っていうキーで突っ込むのどうなのかねーという話を Author の @songmu さんが言ってたりしてた。
そんなわけで、自分もちょっとその辺ひっかかったりしてたのと、そもそもアプリ層でやった方が良さそうじゃないかね、と思いはじめたので、Amon2 のプラグインとして実装してみた。
package MyApp::Web;
use Amon2::Web;
__PACKAGE__->load_plugin('Web::Woothee');
コンテクストから以下のメソッドが呼べるようになる。
- ua_is_pc
- ua_is_crawler
- ua_is_smartphone
- ua_is_mobilephone
- ua_is_misc
主に Woothee の category を見るやつですね。
単純にパースして結果が見れるようになるだけでなく、1リクエスト中で parse が必要になった時だけ、一回限り呼ばれるようになっているのでエコ。
Woothee の parse 結果のパラメータを取りたい場合は、woothee
メソッド経由で取得できる。
$c->woothee->name;
取り急ぎ、ミドルウェア + WAF になるより、WAF のプラグイン単独で完結した方が楽そうな感じではあった。