2014/01/05

Amon2::Plugin::Web::Woothee 書いたよ

去年の11月に開催された Shibuya Plack/PSGI Conference #1 の時にネタ探してて見つけた Plack::Middleware::Woothee というモジュールがありまして、これは Plack のミドルウェア層で User Agent を Woothee でホゲホゲしておくモジュールなわけですが、PSGI の env に psgix.woothee っていうキーで突っ込むのどうなのかねーという話を Author の @songmu さんが言ってたりしてた。

そんなわけで、自分もちょっとその辺ひっかかったりしてたのと、そもそもアプリ層でやった方が良さそうじゃないかね、と思いはじめたので、Amon2 のプラグインとして実装してみた。

Amon2::Plugin::Web::Woothee

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 のプラグイン単独で完結した方が楽そうな感じではあった。

サイト内検索