PHPでAtomAPIを使ってみた。
基本的にHTTPが分かってない。なので、POSTで名前なしのXMLデータを流すにはどうすればいいかさっぱり。これまでは、PerlのXML::Atom::Clientあたりに任せてたから、じゃあPHPではどうするってのが分からなかった。
UnknownPlace. - PHP で WSSE 認証
眠る開発屋blog:HTTP_Requestを使ってはてなフォトライフへ画像を投稿
WSSEの使い方とPOSTでXML(Atom)を流す方法が書いてあった。HTTP_RequestのsetRawPostData関数使うと名前なしで流す事ができるらしい。最初上の方の記事だけ見てて、下の記事からのトラックバックだって気づかずに、XMLをエスケープしたものをPOSTしてた。なので500エラーで困惑。
ちなみに、記事の通りPHP5ではsha1関数がバイナリ出力に対応しているのでpack関数は使わないでいけた。sha1関数の第2引き数にtrueを渡すとバイナリ出力($bin = sha1(time(), true);)。デフォルトではfalseなので注意。
久しぶりにAtomAPIを触りだしたのは、SBSを管理するツールでも作ろうかなと思ったから。netvibesとかGoogleとかのモジュールで対応してるSBSはどうしてもdel.icio.usになる。なので、はてなとdel.icio.usを同期しないといけない。まあ、del.icio.usに乗り換えればいいんだけど慣れからいってちょっと面倒。
今のところできてるものは以下。
・はてなブックマークの全件データをローカルDBと同期する処理
・ローカルDB(はてなブックマーク)とdel.icio.usと同期する処理
・はてなブックマークとdel.icio.usへのクロスポスト
今後作るものは以下。
・はてなとローカルDBとの同期を最小限で済ませる
・ローカルDBにあるブックマークデータのエディタ
・ローカルDBにあるブックマークデータのブラウザ(related tagをサポート、カレンダー?)
・ローカルDBにあるブックマークデータのリンクチェック(301なら更新、なければ削除)
・ソーシャルデータのブラウズ(ユーザとかコメント、タグとか)
・ほか
基本的にローカルでの利用を考えていて、しかも相当な環境依存(PHP5.1.2+MySQL5)なので公開予定はなし。SBS系の派生サービスで遊ぶためにデータを管理したいっていう個人的な欲求が先にある上に、勉強の題材にしてるので。
環境を選ばない(最低限の依存)って事を考えると、PHP5+SQLiteとかがいいのかな?

