M17N対応とかやってみた。

ruby-1.9系の安定版、ruby-1.9.1-p0が公開されていたようなので。
インストールしてみた。

以前に、はてなハイクAPI用のライブラリと、タイムログAPI用のライブラリを作って
rubyforgeに公開していたので。
今回はそれをM17Nに対応して動くようにしてみた。

主な変更箇所は、マジックコメントを入れたぐらいですが。
1箇所だけ、動かない場所があったので修正しました。

それは、次のような箇所です。

修正前

    def http_access(uri, request)
      Net::HTTP.start(uri.host, uri.port){|http|
        response = http.request(request)
        if response.code == '200'
          return REXML::Document.new(response.body)
        else
          return false
        end
      }
    end

これを、ruby-1.9.1-p0で動かすと……
APIからとってきた response.bodyのEncodingがASCII-8bitになってしまうため
REXMLがパースする際にエラーを起こしてしまうのだ。

そこで、こんな風にした。

修正後

    def http_access(uri, request)
      Net::HTTP.start(uri.host, uri.port){|http|
        response = http.request(request)
        if RUBY_VERSION.match(/^1\.9\./)
          response.body.force_encoding('UTF-8')
        end
        if response.code == '200'
          return REXML::Document.new(response.body)
        else
          return false
        end
      }
    end

RUBY_VERSIONが1.9.xの場合は、APIからとってきたものをUTF-8として扱うようにしました。

ひとまず、これで動くようなので修正したものをrubyforgeにアップしました。

はてなハイクAPI用のライブラリは、

gem install -r rhaiker

タイムログAPI用のライブラリは、

gem install -r timelog4r

…で、それぞれ導入できます。