diff options
Diffstat (limited to 'test.py')
-rw-r--r-- | test.py | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/test.py b/test.py deleted file mode 100644 index 950ba8d..0000000 --- a/test.py +++ /dev/null @@ -1,152 +0,0 @@ -import sys -import httplib -import urllib -import time -import json -from threading import Thread, Lock - -class Timer(Thread): - def __init__(self,func,interval=0.50): - Thread.__init__(self) - self.func = func - self.interval = interval - - self.running = False - - def run(self): - self.running = True - while self.running: - self.func() - time.sleep(self.interval) - - def stop(self): - self.running = False - - -class OmegleChat(object): - headers = { - "Host" : "omegle.com", - "Content-type": "application/x-www-form-urlencoded; charset=utf-8", - "Accept": "application/json" - } - - def __init__(self,poll_interval=0.5): - self.conn = httplib.HTTPConnection('www.omegle.com') -# self.conn.set_debuglevel(100) - - self.conn_lock = Lock() - - self.timer = Timer(self.events, poll_interval) - - def start(self): - self.conn_lock.acquire() - self.conn.request("POST", "/start", {}, OmegleChat.headers) - self.conn_lock.release() - r=self.conn.getresponse() - body=r.read() - id=body.split("\"") - if id.__len__() == 3: - self.id = id[1] - print "Connected, id=%s" % self.id - else: - raise Exception("Bad response: %s" % body) - #Poll events - self.timer.start() - - def disconnect(self): - self.timer.stop() - - self.conn_lock.acquire() - self.conn.request("POST", - "/disconnect", - urllib.urlencode({'id' : self.id}), - OmegleChat.headers) - r = self.conn.getresponse() - self.conn_lock.release() - body = r.read() - if body != "win": - raise Exception("/disconnect; Bad response: %s" % body) - - def events(self): - conn = httplib.HTTPConnection('www.omegle.com') - conn.request("POST", - "/events", - urllib.urlencode({'id' : self.id}), - OmegleChat.headers) - r=conn.getresponse() - body=r.read() - self.dispatch_event(conn,body) - conn.close() - - def send(self,msg): - self.conn_lock.acquire() - self.conn.request("POST", - "/send", - urllib.urlencode({'id':self.id,'msg':msg}), - OmegleChat.headers) - r=self.conn.getresponse() - self.conn_lock.release() - body = r.read() - if body != "win": - raise Exception("/send; Bad response %s" % body) - - def typing(self,msg): - self.conn_lock.acquire() - self.conn.request("POST", - "/typing", - urllib.urlencode({'id':self.id}), - OmegleChat.headers) - r=self.conn.getresponse() - self.conn_lock.release() - body = r.read() - if body != "win": - raise Exception("/typing; Bad response %s" % body) - - - def dispatch_event(self,conn,body): - try: - data_set=json.read(body) - for data in data_set: - if data[0] == "typing": - self.on_typing() - elif data[0] == "gotMessage" and data.__len__() == 2: - self.on_message(data[1]) - elif data[0] == "connected": - self.on_connect() - elif data[0] == "strangerDisconnected": - self.timer.stop() - self.on_disconnect() - elif data[0] == "waiting": - pass #unhandled - else: - print "Unknown JSON Data: %s" % body - except json.ReadException: - print "Json ReadException. Body: %s" % body - - def on_message(self,message): - print "<<< %s" % message - def on_connect(self): - print "Connected" - def on_typing(self): - print "Stranger is typing" - def on_disconnect(self): - print "Stranger Disconnectet" - - -if __name__ == "__main__": - print "Lets chat. Type \"quit\" to disconnect" - chat = OmegleChat() - chat.start() - while 1==1: - try: - cmd=sys.stdin.readline().strip() - except KeyboardInterrupt: - chat.disconnect() - break - if cmd=="quit": - chat.disconnect() - break - else: - print ">>> %s" % cmd - chat.send(cmd) - |