ブログ  前の記事  次の記事  2007-07-31 

たけまる / Perl - Atompub モジュールの実装について


2007-07-31

_ Perl - Atompub モジュールの実装について [perl][atompub]

Atompub Interop [2007-07-30-1] で miyagawa さんと話して,なんとな
く Atompub の実装を進めることになりました.

実装はそれほど手間でもないと思うのですが,名前や API がちょっと悩
ましいです.とりあえず予定を書き留めておいて,しばらくして気が変わっ
てなければこのように実装します.

新たに実装する機能
- Media Resource
- Cache (Etag/If-Match)
- Media-type/Category Restriction
- Slug
- Feed Paging
- Configuring Collection (YAML)

実装アプローチ
- XML Format に関するモジュールは,XML::Atom の振舞いを変更する
  (メソッドを追加したり,上書きする)
- Client/Server は,XML::Atom を継承した新しいモジュールを作る
   - Cache の実装はスクラッチで書いたんだけど,適当なモジュールを
     使ったほうがいいだろうか?
- Catalyst プラグインも作ってみる (YAML で Collection の設定ができ
  るようにする)

新モジュール名
- XML::Atompub::Client
- XML::Atompub::Server

Catalyst プラグインの API
- なるべく多くの処理をプログインが行う
- プログラマはいくつかのハンドラ関数を書くだけ
   - Model 操作 (データの出し入れ)
   - ETag の計算
   - Feed Paging?
- Perl 以外の実装を参考にすればいいんだろうけど,調べるのがめんど
  くさい..誰か教えてください.

その他
- エラー処理は,undef を返すのではなく,croak を投げるようにしたい
   -> Perl らしくないので undef and errstr にする
- xBase のある XML をパースできない (segmentation fault)
- content->body: 必ず <div> が追加される.UTF-8 flag の扱いに統一
  性がない
- Client: username がないときは認証ヘッダを付けない
- hash を返している部分で呼んでいる関数が,() を返す可能性があると
  きは ( func || undef ) あるいは scalar func とする

一言メッセージをこっそり送信できます (非公開)
 今年の西暦→
Referrer (Inside): [2007-08-12-1]