class EtherpadIO(object): def __init__(self, pad, cb, host='localhost', path='p/', port='9001', secure=False, verbose = False, transports=['xhr-polling', 'websocket'], **kwarg): log.debug('EtherpadIO(%s://%s:%s/%s%s")' % ('https' if secure else 'http', host, port, path, pad)) res = requests.get("%s://%s:%s/%s%s" % ('https' if secure else 'http', host, port, path, pad)) cookie = res.headers['set-cookie'] self.cookie = dict([(cookie[:cookie.find("=")], cookie[cookie.find("=")+1:])]) self.pad = pad self.cb = cb self.host = host self.path = path self.port = port self.secure = secure self.kwarg = kwarg self.transports = transports self.__init() def __init(self): self.epad = SocketIO(self.host, self.port, EtherpadService, secure=self.secure, transports=self.transports, cookies=self.cookie, padid=self.pad, cb=self.cb, **self.kwarg) def wait(self): reconnect = True while reconnect: reconnect = self.epad.wait() del self.epad if reconnect: self.__init() def has_ended(self): return self.epad.has_ended() def stop(self): self.epad.disconnect() def pause(self): self.epad.pause() def patch_text(self, old, new): cs = pack(old.diff(new)) if cs: self.epad.namespace.send_user_changes(old.get_revision(), old.get_apool(), cs)