2016-11-16 15:52:42 -05:00
|
|
|
#
|
|
|
|
# Copyright 2016 (c) Anna Schumaker.
|
|
|
|
#
|
|
|
|
from . import api
|
|
|
|
from . import auth
|
|
|
|
from . import threads
|
|
|
|
from . import users
|
|
|
|
|
|
|
|
class IM(threads.Thread):
|
|
|
|
def __init__(self, json):
|
|
|
|
threads.Thread.__init__(self, json)
|
|
|
|
self.__uid = json.get("user")
|
|
|
|
self.__user = users.info(self.__uid)
|
|
|
|
|
|
|
|
def name(self):
|
|
|
|
return "Chat With %s" % self.__user.name()
|
|
|
|
|
2016-11-16 16:06:54 -05:00
|
|
|
def url(self, base):
|
|
|
|
return "%s/messages/@%s/" % (base, self.__user.user())
|
|
|
|
|
2016-11-16 15:52:42 -05:00
|
|
|
def do_fetch_info(self):
|
|
|
|
return info(self.id(), self.__uid)
|
|
|
|
|
|
|
|
def do_fetch_messages(self, ts):
|
|
|
|
return history(self.id(), ts)
|
|
|
|
|
|
|
|
def do_mark_messages(self, ts):
|
|
|
|
mark(self.id(), ts)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def history(im, timestamp):
|
|
|
|
ret = api.call("im.history", token = auth.token(), channel = im)
|
|
|
|
if ret["ok"] == False:
|
|
|
|
return None
|
|
|
|
return ret["messages"]
|
|
|
|
|
|
|
|
def info(im, uid):
|
|
|
|
ret = api.call("im.open", token = auth.token(), user = uid, return_im = True)
|
|
|
|
if ret["ok"] == False:
|
|
|
|
return None
|
|
|
|
return ret["channel"]
|
|
|
|
|
|
|
|
def list():
|
|
|
|
ret = api.call("im.list", token = auth.token())
|
|
|
|
if ret["ok"] == False:
|
|
|
|
return None
|
|
|
|
|
|
|
|
im_list = []
|
|
|
|
for im in ret["ims"]:
|
|
|
|
im_list += [ IM(im) ]
|
|
|
|
return im_list
|
|
|
|
|
|
|
|
def mark(im, timestamp):
|
|
|
|
api.call("im.mark", token = auth.token(), channel = im, ts = timestamp)
|