前回[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使おうとしたけど、取得後のエラー
チェックに引っかかってうまくいかなかった。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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に慣れてい
る身としては、こちらのほうが分かりやすい。