Skip to content

Instantly share code, notes, and snippets.

@mattn
Created January 13, 2009 08:14
Show Gist options
  • Save mattn/46364 to your computer and use it in GitHub Desktop.
Save mattn/46364 to your computer and use it in GitHub Desktop.
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