前回[2014-02-03-1] に引き続きこの話題です。

このブログのはてなブックマーク数も記録し始めました。
http://masutaka.net:5125/list/chalow/subscribers

実装はこれ。
https://github.com/masutaka/growthforecast_postman/pull/1/files

今回初めてXMLRPC APIを使いましたが面倒ですね。Wikipedia によると

その後、これに新たな機能を追加したものがSOAPへと発展した。
とあるので、今は廃れた仕様なのでしょうか。

初め、こんな感じでXMLRPC::Client使おうとしたけど、取得後のエラー
チェックに引っかかってうまくいかなかった。

#!/usr/bin/env ruby
require 'net/http'
require 'xmlrpc/client'
# http://d.hatena.ne.jp/snaka72/20110702/1309595184
# slobby patch for Hatena bookmark API
module Net
module HTTPHeader
alias :old_hash :[]
def [](key)
key == 'Content-Type' ? 'text/xml' : old_hash(key)
end
end
end
target_uri = 'http://masutaka.net/chalow/'
counter_api = XMLRPC::Client.new('b.hatena.ne.jp', '/xmlrpc')
current = counter_api.call('bookmark.getTotalCount', target_uri)
p current
# Occur!!
# /Users/masutaka/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/xmlrpc/client.rb:506:in `do_rpc': Wrong size. Was 136, should be 116 (RuntimeError)
# from /Users/masutaka/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/xmlrpc/client.rb:281:in `call2'
# from /Users/masutaka/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/xmlrpc/client.rb:262:in `call'
# from /Users/masutaka/test/ruby/test.rb:19:in `<main>'

最終的にはNet::HTTP使ったシンプルなもの になりました。RESTに慣れてい
る身としては、こちらのほうが分かりやすい。

See also
はてなブックマーク件数取得API - Hatena Developer Center