くりにっき

フルスタックキュアエンジニアです

【今月のgem】faraday_booleanを作った

今月2回目のgemリリースです。*1

github.com

とあるAPIのクライアントgemを仕事で作っています。

ほとんどのAPIのレスポンスはjsonなので faraday_middlewarejsonのparserを使ってるのですが、一部のAPIだけがbodyで truefalse を返してそれをjsonをしてparseしようとエラーになります(;´Д`)

イメージ的にはこんな感じ *2

$ curl http://example.com/boolean/true
true

faraday でこのようなbooleanレスポンスをいい感じに扱うためにgemを作りました。

使い方

require "faraday_boolean"

connection =
  Faraday.new(url: "http://example.com") do |conn|
    conn.response :boolean
    conn.adapter Faraday.default_adapter
  end

res = connection.get("/boolean/true")

res.body
#=> true

res.body.class
#=> TrueClass

上記のように conn.response:boolean を渡せばbodyがtrueかfalseだった時にRubytruefalse (文字列じゃなくてリテラルの方)で返ります。*3

こういうのきっと誰か作ってるだろうと思ったのですが探してもなかったので自分で作りました

ソースコードはコメント込でたった17行。true と false の完全一致でチェックしてるので誤爆しようがないはず。。。 https://github.com/sue445/faraday_boolean/blob/v0.1.0/lib/faraday_boolean/parse_boolean.rb

*1: 10/1 に公開した http://qiita.com/sue445/items/72faa7a352e7c0fc4e07 もあるけどあれは開発期間は9月だったので先月分のgem

*2:僕が扱ってるAPIではfalseの場合でもステータスコードは200 OK返します

*3:もちろんGET以外にもPOST, PUT, DELETEでも問題ないです