最近めきめき話題を集めているsbが1.06DからXML-RPC機能に対応したそうです。
対応表には対応しているかどうか不明としていたんですが、このバージョンからの対応だったんですね。そこでさっそく実装状況を確認してみました。
インストール自体は楽チンです。インストール手順もきちんと整理されています。DB使わないので、僕みたいなレンタルサーバーがMySQLとかに対応していない人でも気楽ですね。
# ただデフォルトのテンプレートが何故か含まれておらず、別途ダウンロードしてインストールする必要がありました。
さて実際の動作ですが、1stバージョンだけあって、いろいろまだ問題もあるみたいです。
1. mt.supportedMethodsをコールするとログインページが返される
対応しているらしいのですが、何故でしょう?少なくともXMLでは返ってこないようです。
2. mt.supportedTextFiltersをコールするとログインページが返される
mt.supportedTextFiltersはそもそも対応していないようなので失敗するのはよいのですが、XML-RPC Faultが返ってきません。
1と合わせて考えると、Fault時の処理に問題があるのかも知れませんね。
但し、テキスト・フォーマットは自動取得できませんが、手動で指定すれば改行変換は行ってくれるようです。
3. カテゴリが一つも登録されていない状態でmetaWeblog.newPostするとPermission Error
当然POST時にカテゴリ指定はしていない状態です。
カテゴリを一つでも作っていれば問題ないようです。
4. metaWeblog.newPostで追記が空だと、追記部分が<string />になる
空タグがそのまま入ってます。
多分単純なハンドリングミスですね。
ちゃんと追記が記載されていれば問題ありません。
5. metaWeblog.newMediaObjectの返り値がInvaild
以下のようなレスポンスが返ってきます。
<?xml version="1.0"encoding="UTF-8"?>
<methodResponse>
<params><param>
<value><string>http://www.example.com/sb/img/img0_xxxxx.JPG</string></value>
</param></params>
</methodResponse>
これは勘違いしやすいのですが、metaWeblog.newMediaObjectの返り値はStructにただ一つだけurl(string)というmemberが含まれなければなりません。
参考: http://www.xmlrpc.com/metaWeblogApi
6. カテゴリ指定せずに新規POSTし、次にカテゴリ指定してPOSTし直すと、トップページなどでカテゴリが反映されていない
手動で再構築すると反映されます。自動的に記事の再構築をしてくれていないのかな?
ただmt.publishPostには対応していないようなので、手動で行う必要があります。
簡単に確認しただけなので、見落としや当方のミスもあるかと思います。とりあえずファースト・インプレッションということでご参考までに。
まだ開発版だと思いますので、今後に期待してます。大変だと思いますが、頑張って下さい >開発者殿。
こんにちは、takkyunさん。
詳細だなんて、とんでもないです。前からsbは注目してましたので、もし参考になればという程度です。
>3 は fault response で code = 7 で返ってきますか?
>ちょっと条件が分からないのですが。
すみません、こちらでも再現しなくなってしまいました。
また、パケットは取っていない時だったのでコードが不明ですが、faultStringは前掲のものでした。
記事とカテゴリーを全部消したり、dataディレクトリ以下を全部消して初期化してみたのですが、正常にPOSTできてしまいました。
発生した時の状況は、インストール直後にテスト記事をブラウザから投稿して、更に拙作の旅行びと日記(テスト用Modify版ですが)からもPOSTした時に発生しました。
その後試しにカテゴリを追加して、カテゴリを指定しない記事を再度POSTすると正常に動作しました。
ただ、再現性が無い以上、ちょっと分かりませんね。こちらの問題かも知れませんし。
しばらく忘れて下さいませm(_)m
6の再構築のタイミングと範囲の問題は、多分どこの作者さんも悩みどころでしょうね。特にsbはさくさく感が売りだと思いますし。
ただ、mt.publishPostは引数にPostIDを取りますし、その記事に関連した「ある程度」の範囲には絞れるかも、とは思うのですが(それでもアーカイブページなどは多くなるのでしょうが)。
またBlogクライアントの立場からするとmt.publishPostが使えないと再構築(静的生成)タイミングが無くなるのが気になります(Blogクライアントからだけで完結できない、という意味です)。
難しいところですね・・
# いろいろ長々と申し訳なかったですが、他のパブリックサービスあたりでは、単にこうさぎ対応を宣言して集客したいだけで、いい加減な実装のままのところも多い中、かなり細部に至るまでしっかりした実装をされていて、正直感心してました。
同じフリー作者として嬉しくもあり。
どうぞ今後とも宜しくお願いします。
詳細な検証、ありがとうございます。 を想定していませんでした。5 は完全に見落としです。
1はバグですね。確認しました。paramsが空だと xmlrpc モードに切り替わってくれないようです(^^;。2も同様です。paramsがないとそもそも xmlrpc モードに切り替わっていませんでした。
3 は fault response で code = 7 で返ってきますか?ちょっと条件が分からないのですが。
4 は空タグ
6 は現状では仕様ですね。MT同様、再構築という概念があるので、mt.publishPost に対応するかどうかは非常に迷っています。
# 問答無用で全体を再構築するのだけは避けたいと思っているので。