rubyでGoogle URL Shortener APIを使う

Googleの短縮URLサービスをrubyでたたいてみます。
URL Shortener API — Google Developers

1,000,000 requests/day らしいですが、ちょろっとした用途には十分です。

APIを使用する

https://code.google.com/apis/console/
ここでcheckをonにするだけ。

f:id:rochefort:20130820000249p:plain

httpartyで書いてみる

当初net/httpで書いてみましたが、あまりきれいでないのと
ssl、post、jsonを使うかつset_form_data だとエラーになるため
httpartyで書いてみました。 とてもsimple。

require 'httparty'
require 'json'

res = HTTParty.post('https://www.googleapis.com/urlshortener/v1/url', 
  :body => { :longUrl => 'http://rochefort.hatenablog.com' }.to_json,
  :headers => { 'Content-Type' => 'application/json' } )
# 結果
>> p res.class
HTTParty::Response
=> HTTParty::Response

>> p res.code
200

>> puts res.body
{
 "kind": "urlshortener#url",
 "id": "http://goo.gl/CfPqZs",
 "longUrl": "http://rochefort.hatenablog.com/"
}

>> pp res
{"kind"=>"urlshortener#url",
 "id"=>"http://goo.gl/CfPqZs",
 "longUrl"=>"http://rochefort.hatenablog.com/"}
=> #<HTTParty::Response:0x7fd73924c918 parsed_response={"kind"="urlshortener#url", "id"="http://goo.gl/CfPqZs", "longUrl"="http://rochefort.hatenablog.com/"}, @response=#<Net::HTTPOK 200 OK readbody=true>, headers{"cache-control"=>["no-cache, no-store, max-age=0, must-revalidate"], "pragma"=>["no-cache"], "expires"=>["Fri, 01 Jan 1990 00:00:00 GMT"], "date"=>["Mon, 19 Aug 2013 13:47:55 GMT"], "etag"=>[""7QRh0l_StuZTJyavuy4-STROp7U/7KIWtJ5Nedidp8ueujFfzGPqUXw""], "content-type"=>["application/json; charset=UTF-8"], "x-content-type-options"=>["nosniff"], "x-frame-options"=>["SAMEORIGIN"], "x-xss-protection"=>["1; mode=block"], "server"=>["GSE"], "connection"=>["close"]}