satoryuの日記

忘れっぽいから覚えてるうちに書いておかないと。

rakuten_web_service v1.10 をリリースしました。

ちまちまと開発を続けているrakuten_web_service v1.10.0 をリリースしました。

今回のリリースで、やっとこさトラベルAPIのうち

を使えるようになりました。

経緯

プルリクエストを振り返ってみると、 このAPIだけがレスポンスの形がマジ糞 設計思想が異なるところから、それをどう取り込んだらいいのか悩んだ挙げ句、途中で挫折してから5年も経ってしまっていました。

github.com

この機能を望んでいる方が現れたので、開発を再開した次第です。

使い方

RakutenWebService::Travel::Hotelsearch メソッドを使い、SimpleHotelSearch APIを利用することができます。

hotels = RWS::Travel::Hotel.search(
  latitude: 128440.51,
  longitude: 503172.21,
  searchRadius: 1
)

また、RakutenWebService::Travel::AreaClass を使うことで、エリアコードを扱うことができます。 AreaClass はLargeClassの唯一のクラス japan を根とした木構造になっています。あるエリアの中の要素は children メソッドで取得することができ、またあるエリアの親エリアの要素はparent で取得することができます。

以下のコードは、東京の子エリアの中から「二子玉川」を含むエリアを取得し、そのエリアに含まれるホテル施設を検索しています。

tokyo = RakutenWebService::Travel::AreaCode::SmallClass['tokyo']
nikotama = tokyo.children.find { |area| area.class_name =~ /二子玉川/ }

nikotama.search.each do |hotel|
  puts "Hotel Name: #{hotel.basic_info['hotelName']}"
end

ご要望、バグ報告があれば、ぜひIssueを!

github.com