LingrをRubyから扱うためのライブラリ書いた

ダウンロード

lingr.rb

まずは感謝

こちらで配布されていたSimple JSON parserを末尾に加えています。パブリックドメインでの提供ありがとうございます。

お断り

ちょっとRubyっぽくないかもしれませんごめんなさい。

使い方

まずは
require "lingr.rb"

してください。

準備
l = Lingr.new(:user => "ユーザ名",:password => "パスワード")

です。
ここで、

l.debug = true

すると何をしているのかわかるようになります。

Lingrへ接続
l.boot

これで接続できます。

lingrから切断
l.shutdown
イベント

動的に新規発言などを即時に得るためイベント的なクラスを使って発言などを取得できます。

イベントの登録

イベントの受信登録はこのように行います。

l.events.register('イベント名','イベント登録名',lambda{|e,l|
    処理        
})

eにはJSONなどが入ります。
lにはlingrのオブジェクトが入ります。
また、第三引数にオブジェクトを指定すると、このように後から取得できます。

l.events.register('イベント名','イベント登録名',lambda{|e,l,s|
    処理        
},self)

sには第三引数で指定したオブジェクトなどが入ります。
selfなどを代入すると便利に使えるかと思います。
また、イベント登録名が重複していると登録されません。

イベントの登録解除
l.events.release('イベント名','イベント登録名')

で可能です。

主なイベント
イベント名 説明 eの値
boot_complete 接続完了時 無し(nil)
shutdown_complete 接続終了時 無し(nil)
new_message 新規メッセージ受信時 Lingr::Messageの配列
status_changed メンバーのオンライン/オフラインが変更されたとき Lingr::Messageの配列
say_complete 発言完了時 json

まだたくさんありますが、普通は使わないイベントなので割愛します。

参加してるルームの取得
l.rooms

で、Roomオブジェクトが取得できます。
で取得できます。ルーム名(文字列)の配列です。

Roomオブジェクト/Memberオブジェクト/Messageオブジェクト

l.roomsの中にあるオブジェクトです。
Roomオブジェクト

メソッド名 説明
id ルームid
description ルーム概要
members メンバー一覧の配列
messages ログの配列(bootした後のログは反映されません)
public? そのルームがpublicかどうか
name ルーム名

Messageオブジェクト

メソッド名 説明
text メッセージ内容
timestamp UTCでの発言時刻。Timeオブジェクト。
user 発言者。Memberオブジェクト

Memberオブジェクト

メソッド名 説明
icon_url イコン画像のURL
nickname ユーザーID
owner そのルームのownerかどうか
presense オンラインならtrue(boot時)
username 表示名
発言する
l.say(ルームIDまたはRoomオブジェクト,"テキスト")
メンバーリストの取得
l.rooms[0].members

など