Rubyのmechanize使ってGoogleReaderにアクセスするツール(仮)GR4Ruby
この前Rubyを使ってGoogle Readerの情報を取得するというエントリでgooglereaderというgemのパッケージを使ってGoogle ReaderのAPIにアクセスするやり方書いたけどStarredのアイテムの取得方法がどうもわからないので、路線変更してmechanizeを使うことに急遽今朝、スタバで勉強している時に決めてしまいました。
ツールの名前だけどあんまりいけていないけど、Google Reader for Ruby をちょっと省略してGR4Rubyっていう感じにしようかと思いますが気が変わって違う名前にするかもしれないけど、そんなことを考えていて実際に作り始めるまでに時間がかかるのは本末転倒なのでまずは思いついたテストはこんな感じ
require 'test/unit' require '../GR4Ruby' class GR4RubyTests < Test::Unit::TestCase def setup @GR = GR4Ruby.new("xxxxx@gmail.com","passwd") end def test_generate_SID # http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI # SID : Session ID. SID is generated each time you login to Google # (any service). The SID is valid until you logout. assert_equal("", @GR.get_sid) end def test_config assert_equal("xxxxx@gmail.com", @GR.userid) assert_equal("password", @GR.passwd) # tokenはとりあえずスタティックに設定。 assert_equal("xxxxxxxx",@GR.token) end end
肝心のGoogleReaderにログインするテストケースも書いていないし正直これじゃほとんど意味ないんだろうけど、なにせ自分自身テスト駆動開発っていうのがよくわかっていないんだよね。。
まぁそんな細かい事は気にしないで、こんな感じでちょっとづつだけどテストにパスするためのコードを書きました。
class GR4Ruby def initialize(userid, passwd) @userid = userid @passwd = passwd @token = "xxxxxx" end attr_reader :userid, :passwd, :SID, :token def get_sid # this.open(@userid, @passwd)のような感じ? end def open # mechanizeを利用して、GoogoleReaderのAPIにアクセスする end end
実際書きながら
「設定情報は、この前チェックしたconfigatronを使った方がスマートな感じがしそうだなぁー」
「tokenを得るにはログインしている状態ならこれにアクセスすれば取得できるし、ついでにconigaration使って設定ファイルに書き込むとかやれるとかっこいいかも」
と色々考えつつも、その場で解決しない事なんかも色々出て来てしまったのと、出社時間が迫ったこともあり今朝の所はこれまで。
明日の朝も頑張って勉強したいので、その時までに
- configatronをインストールする
- オフラインで開発するために、GoogleReaderにアクセスしたかのように振る舞うモックオブジェクトを生成できる環境をローカルに構築する(これがよくわかっていない)
- mechanizeのドキュメントを読む
をクリアーしないといけないけど、一気にここまでやるのはたぶん無理なのでちょっとづつやっていく