Atnd4Rの使い方
詳しい使い方について説明します
ATND API の Ruby ラッパー Atnd4R を作りました - @sugamasao.blog.title # => ”コードで世界を変えたい” でちょっとだけ使い方を記載したのですが、取得したデータのみかたとかはちゃんと書いていなかったので、改めて記載しておきます。
require 方法
gem 経由でのインストールであれば、以下のように、require 'rubygems' が最初に必要になります。
irb(main):001:0> require 'rubygems' => true irb(main):002:0> require 'atnd4r' => true
イベントサーチAPI(Atnd4r.get_event_list)の使い方
入力パラメータや出力パラメータの詳細は ATND API リファレンス を参照してください。
値を定義、検索方法
以下の例では、引数を param として、定義してからメソッド呼び出しを行っています。
なお、検索パラメータの :event_id の部分や、値(1の部分)は、文字列でもシンボルでも、数値でも構いません*1。
irb(main):007:0> param = {:event_id => 1} => {:event_id=>1} irb(main):008:0> event = Atnd4r.get_event_list(param) :
結果の確認方法
例えば、検索結果の件数(results-returned)を参照してみましょう。
irb(main):012:0> event.results_returned => 1 irb(main):013:0> event.results_returned.class => Fixnum
各プロパティのオブジェクトの型は XML で取得した際の属性により、Rubyのどのオブジェクトへ変換するかを判定しています。
このエントリの最後に変換表を記載しましたので、気になる方はご確認下さい。
イベント情報を見てみましょう
イベント情報は、events プロパティの配列に入っています。
irb(main):024:0* event.events.class => Array
events は、イベントが一つでも複数でも、Array オブジェクトとなります。
Array の中身は、 Atnd4r::AtndEvent となっており、そのオブジェクトのアクセッサメソッドとして、event_id 等が格納されています。
irb(main):050:0> event.events.each do |e| irb(main):051:1* puts e.class irb(main):052:1> puts e.event_id irb(main):053:1> end Atnd4r::AtndEvent 1
この例ではイベントが一つだったので、一件だけですが、複数の場合はここの配列が複数個になります。
出欠確認API(Atnd4r.get_user_list)の使い方
入力パラメータや出力パラメータの詳細は ATND API リファレンス を参照してください。
以下の例では、引数を param として、定義してからメソッド呼び出しを行っています。
なお、検索パラメータの :event_id の部分や、値(1の部分)は、文字列でもシンボルでも、数値でも構いません。
irb(main):038:0* param = {:user_id => 1} => {:user_id=>1} irb(main):039:0> user = Atnd4r::get_user_list(param) :
結果の確認方法
例えば、検索結果の件数(results-returned)を参照してみましょう。
irb(main):040:0> user.results_returned => 6 irb(main):041:0> user.results_returned.class => Fixnum
今回は、ユーザに紐づくイベント情報が取得されているので、件数は 6 件と出ていますね。
イベント情報を見てみましょう
イベント情報は、events プロパティの配列に入っています。
irb(main):024:0* event.events.class => Array
events は、イベントが一つでも複数でも、Array オブジェクトとなります。
Array の中身は、 Atnd4r::AtndEvent となっており、そのオブジェクトのアクセッサメソッドとして、event_id 等が格納されています。
irb(main):046:0> user.events.each do |e| irb(main):047:1* puts e.class irb(main):048:1> puts e.event_id irb(main):049:1> end Atnd4r::AtndEvent 1171 Atnd4r::AtndEvent 482 Atnd4r::AtndEvent 292 Atnd4r::AtndEvent 1 Atnd4r::AtndEvent 198 Atnd4r::AtndEvent 33
これで、ユーザが登録しているイベント一覧が分かりますね。
イベントに登録しているユーザ情報を見てみましょう
出欠確認APIでデータを取得した場合、 Atnd4r::Event オブジェクトの users プロパティに Atnd4r::AtndUser の配列が格納されます*2。
例えば、event_id=1 に登録しているユーザ情報の場合
irb(main):058:0> user.events[0].users.each do |u| irb(main):059:1* puts u.class irb(main):060:1> puts u.user_id irb(main):061:1> end Atnd4r::AtndUser 1 (省略)
今回の例ではユーザIDから引きに行ったので「あるユーザの登録しているイベント」で取得しましたが、この API 自体は event_id も受け付けるので、あるイベントのユーザ情報が取得したい! という場合は、検索クエリを :event_id => 1 等としてあげれば良いです。
注意事項
両APIで、同じ Atnd4r::AtndEvent というクラスが用いられますが、API によって取得できる値に差異がありますので、出欠確認APIでは値が入っていたのに、イベントサーチAPIでは nil になってる・・・。という可能性があります。
ですので、使用する際は公式APIの仕様をご確認しつつ、ご利用下さい。