2007-01-27

bloggerpostにログの機能を追加

bloggerpost-0.0.3.tar.bz2

更新と削除の機能を追加したものの、postIDの取得方法がなかったので、激しく不便だったのだが、よく考えれば(考えなくても)レスポンスのボディに書いてあるんじゃん?と思ったら、やっぱり書いてあった。それでこの情報を元にログファイルを作ることにした。

デフォルトで ~/.bloggerpost/log.yml にログを書き込む。例えば、このエントリーのログなら

---
title: "bloggerpostにログの機能を追加"
date: 2007-01-27T21:17:00+0900
posturl: http://www.blogger.com/feeds/2861948079335449058/posts/default/4463659030598924613
url: http://yu-u.blogspot.com/2007/01/bloggerpost_5064.html
method: POST
label:
- bloggerpost
- ruby
- blogger

みたいになる。くどいと思ったらYAMLなので

require 'yaml'

YAML.each_document($stdin) do |entry|
puts "#{entry['date']} #{entry['method']}\t#{entry['posturl']}"
end

とか書いて食わせれば

2007-01-27T19:57:00+0900 PUT    http://www.blogger.com/feeds/2861948079335449058/posts/default/8548166907848415497
2007-01-27T21:17:00+0900 POST http://www.blogger.com/feeds/2861948079335449058/posts/default/4463659030598924613
2007-01-27T21:17:00+0900 PUT http://www.blogger.com/feeds/2861948079335449058/posts/default/4463659030598924613
2007-01-27T21:19:42+0900 DELETE http://www.blogger.com/feeds/2861948079335449058/posts/default/8548166907848415497

みたいに簡潔になる。

このコードも書くのに手間取ったところがあって、YAMLで日本語を書き込もうとすると、なぜかバイナリ扱いになっちゃうんだよね。色々検索したら「日本語をto_yamlするとエンコードされてしまう問題を安直な方法で解決する」というページを発見。真似したらうまくいった。


0 件のコメント: