HTTP::RouterをWAFに組み込んでみた
Railsをインスパイアして、conf/routes.yamlをロードすると、以下のようなディスパッチテーブルを生成するWAFを、HTTP::Routerを使って作ってみた。
conf/routes.yaml
--- - type: resource controller: Book
dispatch table
.-------------------------------------+------------+------------+------------. | path | method | controller | action | +-------------------------------------+------------+------------+------------+ | /Book | GET | Book | index | | /Book | POST | Book | create | | /Book/new | POST | Book | new | | /Book/{id}/edit | GET | Book | edit | | /Book/{id} | GET | Book | show | | /Book/{id} | PUT | Book | update | | /Book/{id} | DELETE | Book | destroy | '-------------------------------------+------------+------------+------------'
今作ってるAngelosというWAFもHTTP::Routerに移行させてみました。
Angelos::Dispatcher::RoutesとAngelos::Dispatcher::Routes::BuilderあたりみるとどのようにWAFにHTTP::Routerを組み込むのかがわかります。
http://github.com/dann/angelos/tree/master
Railsのdispatcher部分のコードを読んだので早速作ってみたというだけなんですが、Path::Dispatcherベースよりシンプルになっていいんじゃないかと思ってます。
Path::Dispatcherのほうがより複雑なルールの書き方ができるんですが、そこまでいらないよねというだけなんですが。
# WAFも年末あたりにもう少しコンセプトを固めて、作り込みたいですね。