Created
January 13, 2009 08:14
-
-
Save mattn/46364 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'net/http' | |
require 'json' | |
require 'cgi' | |
class Lingr | |
def initialize(api_key) | |
@api_key = api_key | |
@http = nil | |
Net::HTTP.start('www.lingr.com', 80) do |h| | |
@http = h | |
end | |
end | |
def session_create | |
req = Net::HTTP::Post.new("/api/session/create") | |
JSON.parse(@http.request(req, "api_key=#{CGI.escape(@api_key)}&format=json").body) | |
end | |
def session_destroy(session) | |
req = Net::HTTP::Post.new("/api/session/destroy") | |
JSON.parse(@http.request(req, "api_key=#{CGI.escape(@api_key)}&session=#{CGI.escape(session)}&format=json").body) | |
end | |
def auth_login(session, email, password) | |
req = Net::HTTP::Post.new("/api/auth/login") | |
JSON.parse(@http.request(req, "api_key=#{CGI.escape(@api_key)}&session=#{CGI.escape(session)}&email=#{CGI.escape(email)}&password=#{CGI.escape(password)}&format=json").body) | |
end | |
def room_enter(session, id, password, nickname) | |
req = Net::HTTP::Post.new("/api/room/enter") | |
JSON.parse(@http.request(req, "api_key=#{CGI.escape(@api_key)}&session=#{CGI.escape(session)}&id=#{CGI.escape(id)}&password=#{CGI.escape(password)}&nickname=#{CGI.escape(nickname)}&format=json").body) | |
end | |
def room_exit(session, ticket) | |
req = Net::HTTP::Post.new("/api/room/exit") | |
JSON.parse(@http.request(req, "api_key=#{CGI.escape(@api_key)}&session=#{CGI.escape(session)}&ticket=#{CGI.escape(ticket)}&format=json").body) | |
end | |
def room_say(session, ticket, message, occupant_id) | |
req = Net::HTTP::Post.new("/api/room/say") | |
query = "api_key=#{CGI.escape(@api_key)}&session=#{CGI.escape(session)}&ticket=#{CGI.escape(ticket)}&message=#{CGI.escape(message)}&format=json" | |
query << "&occupant_id=#{CGI.escape(occupant_id)}" if occupant_id | |
JSON.parse(@http.request(req, query).body) | |
end | |
def room_getmessages(session, ticket, counter, user_messages_only) | |
req = Net::HTTP::Post.new("/api/room/say") | |
query = "api_key=#{CGI.escape(@api_key)}&session=#{CGI.escape(session)}&ticket=#{CGI.escape(ticket)}&counter=#{CGI.escape(counter.to_s)}&format=json" | |
query << "&user_messages_only=#{CGI.escape(user_messages_only)}" if user_messages_only | |
JSON.parse(@http.request(req, query).body) | |
end | |
end | |
require 'pit' | |
config = Pit.get("lingr", :require => { | |
"api_key" => "your api_key in lingr", | |
"room_id" => "room id on lingr", | |
"nickname" => "your nickname in lingr", | |
"email" => "your email in lingr", | |
"password" => "your password in lingr" | |
}) | |
message = 'example post from lingr.rb' | |
lingr = Lingr.new(config['api_key']) | |
session_res = lingr.session_create() | |
lingr.auth_login(session_res['session'], config['email'], config['password']) | |
room_res = lingr.room_enter(session_res['session'], config['room_id'], '', config['nickname']) | |
lingr.room_say(session_res['session'], room_res['ticket'], message, nil) | |
lingr.room_getmessages(session_res['session'], room_res['ticket'], room_res['room']['counter'], nil) | |
lingr.room_exit(session_res['session'], room_res['ticket']) | |
lingr.session_destroy(session_res['session']) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment