|
|
@@ -3,7 +3,6 @@
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
import requests
|
|
|
|
import requests
|
|
|
|
import urllib
|
|
|
|
import urllib
|
|
|
|
import traceback
|
|
|
|
|
|
|
|
from uuid import uuid1
|
|
|
|
from uuid import uuid1
|
|
|
|
from random import choice
|
|
|
|
from random import choice
|
|
|
|
from datetime import datetime
|
|
|
|
from datetime import datetime
|
|
|
@@ -1012,6 +1011,7 @@ class Client(object):
|
|
|
|
:type thread_type: models.ThreadType
|
|
|
|
:type thread_type: models.ThreadType
|
|
|
|
:raises: Exception if request failed
|
|
|
|
:raises: Exception if request failed
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
thread_id, thread_type = self._getThread(thread_id, thread_type)
|
|
|
|
thread_id, thread_type = self._getThread(thread_id, thread_type)
|
|
|
|
|
|
|
|
|
|
|
|
if thread_type == ThreadType.USER:
|
|
|
|
if thread_type == ThreadType.USER:
|
|
|
@@ -1024,6 +1024,8 @@ class Client(object):
|
|
|
|
data['log_message_data[name]'] = title
|
|
|
|
data['log_message_data[name]'] = title
|
|
|
|
data['log_message_type'] = 'log:thread-name'
|
|
|
|
data['log_message_type'] = 'log:thread-name'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return self._doSendRequest(data)
|
|
|
|
|
|
|
|
|
|
|
|
def changeNickname(self, nickname, user_id, thread_id=None, thread_type=ThreadType.USER):
|
|
|
|
def changeNickname(self, nickname, user_id, thread_id=None, thread_type=ThreadType.USER):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Changes the nickname of a user in a thread
|
|
|
|
Changes the nickname of a user in a thread
|
|
|
@@ -1276,7 +1278,6 @@ class Client(object):
|
|
|
|
thread_id = str(metadata['threadKey']['threadFbId'])
|
|
|
|
thread_id = str(metadata['threadKey']['threadFbId'])
|
|
|
|
self.onPeopleAdded(mid=mid, added_ids=added_ids, author_id=author_id, thread_id=thread_id,
|
|
|
|
self.onPeopleAdded(mid=mid, added_ids=added_ids, author_id=author_id, thread_id=thread_id,
|
|
|
|
ts=ts, msg=m)
|
|
|
|
ts=ts, msg=m)
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Left/removed participants
|
|
|
|
# Left/removed participants
|
|
|
|
elif 'leftParticipantFbId' in delta:
|
|
|
|
elif 'leftParticipantFbId' in delta:
|
|
|
@@ -1284,7 +1285,6 @@ class Client(object):
|
|
|
|
thread_id = str(metadata['threadKey']['threadFbId'])
|
|
|
|
thread_id = str(metadata['threadKey']['threadFbId'])
|
|
|
|
self.onPersonRemoved(mid=mid, removed_id=removed_id, author_id=author_id, thread_id=thread_id,
|
|
|
|
self.onPersonRemoved(mid=mid, removed_id=removed_id, author_id=author_id, thread_id=thread_id,
|
|
|
|
ts=ts, msg=m)
|
|
|
|
ts=ts, msg=m)
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Color change
|
|
|
|
# Color change
|
|
|
|
elif delta_type == "change_thread_theme":
|
|
|
|
elif delta_type == "change_thread_theme":
|
|
|
@@ -1292,7 +1292,6 @@ class Client(object):
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(metadata)
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(metadata)
|
|
|
|
self.onColorChange(mid=mid, author_id=author_id, new_color=new_color, thread_id=thread_id,
|
|
|
|
self.onColorChange(mid=mid, author_id=author_id, new_color=new_color, thread_id=thread_id,
|
|
|
|
thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
|
|
|
thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Emoji change
|
|
|
|
# Emoji change
|
|
|
|
elif delta_type == "change_thread_icon":
|
|
|
|
elif delta_type == "change_thread_icon":
|
|
|
@@ -1300,7 +1299,6 @@ class Client(object):
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(metadata)
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(metadata)
|
|
|
|
self.onEmojiChange(mid=mid, author_id=author_id, new_emoji=new_emoji, thread_id=thread_id,
|
|
|
|
self.onEmojiChange(mid=mid, author_id=author_id, new_emoji=new_emoji, thread_id=thread_id,
|
|
|
|
thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
|
|
|
thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Thread title change
|
|
|
|
# Thread title change
|
|
|
|
elif delta.get("class") == "ThreadName":
|
|
|
|
elif delta.get("class") == "ThreadName":
|
|
|
@@ -1308,7 +1306,6 @@ class Client(object):
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(metadata)
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(metadata)
|
|
|
|
self.onTitleChange(mid=mid, author_id=author_id, new_title=new_title, thread_id=thread_id,
|
|
|
|
self.onTitleChange(mid=mid, author_id=author_id, new_title=new_title, thread_id=thread_id,
|
|
|
|
thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
|
|
|
thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Nickname change
|
|
|
|
# Nickname change
|
|
|
|
elif delta_type == "change_thread_nickname":
|
|
|
|
elif delta_type == "change_thread_nickname":
|
|
|
@@ -1318,7 +1315,6 @@ class Client(object):
|
|
|
|
self.onNicknameChange(mid=mid, author_id=author_id, changed_for=changed_for,
|
|
|
|
self.onNicknameChange(mid=mid, author_id=author_id, changed_for=changed_for,
|
|
|
|
new_nickname=new_nickname,
|
|
|
|
new_nickname=new_nickname,
|
|
|
|
thread_id=thread_id, thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
|
|
|
thread_id=thread_id, thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Message delivered
|
|
|
|
# Message delivered
|
|
|
|
elif delta.get("class") == "DeliveryReceipt":
|
|
|
|
elif delta.get("class") == "DeliveryReceipt":
|
|
|
@@ -1328,7 +1324,6 @@ class Client(object):
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(delta)
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(delta)
|
|
|
|
self.onMessageDelivered(msg_ids=message_ids, delivered_for=delivered_for,
|
|
|
|
self.onMessageDelivered(msg_ids=message_ids, delivered_for=delivered_for,
|
|
|
|
thread_id=thread_id, thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
|
|
|
thread_id=thread_id, thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Message seen
|
|
|
|
# Message seen
|
|
|
|
elif delta.get("class") == "ReadReceipt":
|
|
|
|
elif delta.get("class") == "ReadReceipt":
|
|
|
@@ -1338,7 +1333,6 @@ class Client(object):
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(delta)
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(delta)
|
|
|
|
self.onMessageSeen(seen_by=seen_by, thread_id=thread_id, thread_type=thread_type,
|
|
|
|
self.onMessageSeen(seen_by=seen_by, thread_id=thread_id, thread_type=thread_type,
|
|
|
|
seen_ts=seen_ts, ts=delivered_ts, metadata=metadata, msg=m)
|
|
|
|
seen_ts=seen_ts, ts=delivered_ts, metadata=metadata, msg=m)
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Messages marked as seen
|
|
|
|
# Messages marked as seen
|
|
|
|
elif delta.get("class") == "MarkRead":
|
|
|
|
elif delta.get("class") == "MarkRead":
|
|
|
@@ -1351,18 +1345,20 @@ class Client(object):
|
|
|
|
|
|
|
|
|
|
|
|
# thread_id, thread_type = getThreadIdAndThreadType(delta)
|
|
|
|
# thread_id, thread_type = getThreadIdAndThreadType(delta)
|
|
|
|
self.onMarkedSeen(threads=threads, seen_ts=seen_ts, ts=delivered_ts, metadata=delta, msg=m)
|
|
|
|
self.onMarkedSeen(threads=threads, seen_ts=seen_ts, ts=delivered_ts, metadata=delta, msg=m)
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# New message
|
|
|
|
# New message
|
|
|
|
elif delta.get("class") == "NewMessage":
|
|
|
|
elif delta.get("class") == "NewMessage":
|
|
|
|
message = delta.get('body', '')
|
|
|
|
message = delta.get('body', '')
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(metadata)
|
|
|
|
thread_id, thread_type = getThreadIdAndThreadType(metadata)
|
|
|
|
self.onMessage(mid=mid, author_id=author_id, message=message,
|
|
|
|
self.onMessage(mid=mid, author_id=author_id, message=message,
|
|
|
|
thread_id=thread_id, thread_type=thread_type, ts=ts, metadata=m, msg=m)
|
|
|
|
thread_id=thread_id, thread_type=thread_type, ts=ts, metadata=metadata, msg=m)
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
# Unknown message type
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
self.onUnknownMesssageType(msg=m)
|
|
|
|
|
|
|
|
|
|
|
|
# Inbox
|
|
|
|
# Inbox
|
|
|
|
if mtype == "inbox":
|
|
|
|
elif mtype == "inbox":
|
|
|
|
self.onInbox(unseen=m["unseen"], unread=m["unread"], recent_unread=m["recent_unread"], msg=m)
|
|
|
|
self.onInbox(unseen=m["unseen"], unread=m["unread"], recent_unread=m["recent_unread"], msg=m)
|
|
|
|
|
|
|
|
|
|
|
|
# Typing
|
|
|
|
# Typing
|
|
|
@@ -1490,7 +1486,7 @@ class Client(object):
|
|
|
|
|
|
|
|
|
|
|
|
:param exception: The exception that was encountered
|
|
|
|
:param exception: The exception that was encountered
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
traceback.print_exc()
|
|
|
|
log.exception('Got exception while listening')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def onMessage(self, mid=None, author_id=None, message=None, thread_id=None, thread_type=ThreadType.USER, ts=None, metadata=None, msg={}):
|
|
|
|
def onMessage(self, mid=None, author_id=None, message=None, thread_id=None, thread_type=ThreadType.USER, ts=None, metadata=None, msg={}):
|
|
|
|