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
このバージョンで一応動作上の不都合は無いもののはず。

投稿者 his : 2006年1月 9日 00:12
このエントリーのトラックバックURL: http://hoop.euqset.org/blog/mt-tb2006.cgi/3521
コメント

multipartのメッセージの時に、うまくいかないバグがあるのを発見した。

でも、今日は寝よう(==;

Posted by: his : 2006年1月11日 03:12
コメントする









名前、アドレスを登録しますか?





画像の中に見える文字を入力してください。