すがブロ

sugamasaoのhatenablogだよ

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の仕様をご確認しつつ、ご利用下さい。

型変換のルール

XML属性 Rubyオブジェクト
integer Fixnum
decimal Float
datetime Time
Array Array
nil nil
その他 String

あとは、検索結果のオブジェクト自体は Atnd4r::AtndAPI で、イベントオブジェクトは Atnd4r::AtndEvent 、ユーザオブジェクトは Atnd4r::AtndUser となります。

*1:Hashの形式として渡ってくれば良いです。最終的に to_s しますので

*2:イベントサーチAPIの場合は空の配列