2006年1月9日月曜日

mail2mt-newpost.plちょっといじり(懲りずに2)


またちょっといじった。



> TODO:



>・Date:ヘッダからBlog投稿時刻を設定する部分にまだbugがあるみたいなので直す。

> #年月日は正しいようだけど、時刻が00:00:00になってしまうようだ。



何が悪いのか良くわからなかったので、MT/MTServer.pmのソースを見てみた。





sub iso2ts {
my($blog, $iso) = @_;
die MT::XMLRPCServer::_fault("Invalid timestamp format")
unless $iso =~ /^(\d{4})(?:-?(\d{2})(?:-?(\d\d?)(?:T(\d{2}):(\d{2}):(\d{2})(?:\.\d+)?(Z|[+-]\d{2}:\d{2})?)?)?)?/;
my($y, $mo, $d, $h, $m, $s, $offset) =
($1, $2 || 1, $3 || 1, $4 || 0, $5 || 0, $6 || 0, $7);



どうもiso.8601のフォーマットが、HTTP::Date::time2iso()が出力するものと、
MovableTypeで想定しているものに違いがあるようだ。

HTTP::Date::time2iso()は"2006-01-09 00:12:34"と言う形式で出力するが、MT側は"2006-01-09T00:12:34"と言うフォーマットで来ることを期待している。



仕方なくちょっと出力フォーマットに手を加えた。

その他、タイムゾーンの問題もあったのでHTTP::Date::time2iso()からHTTP::Date::time2isoz()に変更。

参考になったのがXML-RPCの投稿日時



mail2mt-newpost.pl.1.3

このバージョンで一応動作上の不都合は無いもののはず。


1 件のコメント:

  1. multipartのメッセージの時に、うまくいかないバグがあるのを発見した。
    でも、今日は寝よう(==;

    返信削除