Methods to form a dictionary for inbox and sent messages

This commit is contained in:
Dmitri Bogomolov 2018-10-23 14:37:51 +03:00
parent 45b0659e4c
commit 7cafe402be
Signed by untrusted user: g1itch
GPG Key ID: 720A756F18DEED13

View File

@ -314,6 +314,41 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler, object):
return (status, addressVersionNumber, streamNumber, ripe) return (status, addressVersionNumber, streamNumber, ripe)
@staticmethod
def _dump_inbox_message(
msgid, toAddress, fromAddress, subject, received,
message, encodingtype, read):
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
message = shared.fixPotentiallyInvalidUTF8Data(message)
return {
'msgid': hexlify(msgid),
'toAddress': toAddress,
'fromAddress': fromAddress,
'subject': base64.b64encode(subject),
'message': base64.b64encode(message),
'encodingType': encodingtype,
'receivedTime': received,
'read': read
}
@staticmethod
def _dump_sent_message(
msgid, toAddress, fromAddress, subject, lastactiontime,
message, encodingtype, status, ackdata):
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
message = shared.fixPotentiallyInvalidUTF8Data(message)
return {
'msgid': hexlify(msgid),
'toAddress': toAddress,
'fromAddress': fromAddress,
'subject': base64.b64encode(subject),
'message': base64.b64encode(message),
'encodingType': encodingtype,
'lastActionTime': lastactiontime,
'status': status,
'ackData': hexlify(ackdata)
}
# Request Handlers # Request Handlers
@command('listAddresses', 'listAddresses2') @command('listAddresses', 'listAddresses2')
@ -610,22 +645,9 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler, object):
" encodingtype, read FROM inbox WHERE folder='inbox'" " encodingtype, read FROM inbox WHERE folder='inbox'"
" ORDER BY received" " ORDER BY received"
) )
data = [] return {"inboxMessages": [
for (msgid, toAddress, fromAddress, subject, received, message, self._dump_inbox_message(*data) for data in queryreturn
encodingtype, read) in queryreturn: ]}
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
message = shared.fixPotentiallyInvalidUTF8Data(message)
data.append({
'msgid': hexlify(msgid),
'toAddress': toAddress,
'fromAddress': fromAddress,
'subject': base64.b64encode(subject),
'message': base64.b64encode(message),
'encodingType': encodingtype,
'receivedTime': received,
'read': read
})
return {"inboxMessages": data}
@command('getAllInboxMessageIds', 'getAllInboxMessageIDs') @command('getAllInboxMessageIds', 'getAllInboxMessageIDs')
def HandleGetAllInboxMessageIds(self): def HandleGetAllInboxMessageIds(self):
@ -663,24 +685,11 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler, object):
"SELECT toaddress, fromaddress, subject, received, message," "SELECT toaddress, fromaddress, subject, received, message,"
" encodingtype, read FROM inbox WHERE msgid=?", msgid " encodingtype, read FROM inbox WHERE msgid=?", msgid
) )
data = []
try: try:
(toAddress, fromAddress, subject, received, message, encodingtype, return {"inboxMessage": [
read) = queryreturn[0] self._dump_inbox_message(*queryreturn[0])]}
except IndexError: except IndexError:
return # FIXME inconsistent pass # FIXME inconsistent
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
message = shared.fixPotentiallyInvalidUTF8Data(message)
return {"inboxMessage": [{
'msgid': hid,
'toAddress': toAddress,
'fromAddress': fromAddress,
'subject': base64.b64encode(subject),
'message': base64.b64encode(message),
'encodingType': encodingtype,
'receivedTime': received,
'read': read
}]}
@command('getAllSentMessages') @command('getAllSentMessages')
def HandleGetAllSentMessages(self): def HandleGetAllSentMessages(self):
@ -691,23 +700,9 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler, object):
" message, encodingtype, status, ackdata FROM sent" " message, encodingtype, status, ackdata FROM sent"
" WHERE folder='sent' ORDER BY lastactiontime" " WHERE folder='sent' ORDER BY lastactiontime"
) )
data = [] return {"sentMessages": [
for (msgid, toAddress, fromAddress, subject, lastactiontime, message, self._dump_sent_message(*data) for data in queryreturn
encodingtype, status, ackdata) in queryreturn: ]}
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
message = shared.fixPotentiallyInvalidUTF8Data(message)
data.append({
'msgid': hexlify(msgid),
'toAddress': toAddress,
'fromAddress': fromAddress,
'subject': base64.b64encode(subject),
'message': base64.b64encode(message),
'encodingType': encodingtype,
'lastActionTime': lastactiontime,
'status': status,
'ackData': hexlify(ackdata)
})
return {"sentMessages": data}
@command('getAllSentMessageIds', 'getAllSentMessageIDs') @command('getAllSentMessageIds', 'getAllSentMessageIDs')
def HandleGetAllSentMessageIds(self): def HandleGetAllSentMessageIds(self):
@ -727,24 +722,12 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler, object):
"""Handle a request to get inbox messages by receiver""" """Handle a request to get inbox messages by receiver"""
queryreturn = sqlQuery( queryreturn = sqlQuery(
"SELECT msgid, toaddress, fromaddress, subject, received, message," "SELECT msgid, toaddress, fromaddress, subject, received,"
" encodingtype FROM inbox WHERE folder='inbox' AND toAddress=?", " message, encodingtype, read FROM inbox WHERE folder='inbox'"
toAddress) " AND toAddress=?", toAddress)
data = [] return {"inboxMessages": [
for (msgid, toAddress, fromAddress, subject, received, message, self._dump_inbox_message(*data) for data in queryreturn
encodingtype) in queryreturn: ]}
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
message = shared.fixPotentiallyInvalidUTF8Data(message)
data.append({
'msgid': hexlify(msgid),
'toAddress': toAddress,
'fromAddress': fromAddress,
'subject': base64.b64encode(subject),
'message': base64.b64encode(message),
'encodingType': encodingtype,
'receivedTime': received
})
return {"inboxMessages": data}
@command('getSentMessageById', 'getSentMessageByID') @command('getSentMessageById', 'getSentMessageByID')
def HandleGetSentMessageById(self, hid): def HandleGetSentMessageById(self, hid):
@ -757,23 +740,11 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler, object):
msgid msgid
) )
try: try:
(toAddress, fromAddress, subject, lastactiontime, message, return {"sentMessage": [
encodingtype, status, ackdata) = queryreturn[0] self._dump_sent_message(*queryreturn[0])
]}
except IndexError: except IndexError:
return # FIXME inconsistent pass # FIXME inconsistent
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
message = shared.fixPotentiallyInvalidUTF8Data(message)
return {"sentMessage": [{
'msgid': hid,
'toAddress': toAddress,
'fromAddress': fromAddress,
'subject': base64.b64encode(subject),
'message': base64.b64encode(message),
'encodingType': encodingtype,
'lastActionTime': lastactiontime,
'status': status,
'ackData': hexlify(ackdata)
}]}
@command('getSentMessagesByAddress', 'getSentMessagesBySender') @command('getSentMessagesByAddress', 'getSentMessagesBySender')
def HandleGetSentMessagesByAddress(self, fromAddress): def HandleGetSentMessagesByAddress(self, fromAddress):
@ -785,23 +756,9 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler, object):
" WHERE folder='sent' AND fromAddress=? ORDER BY lastactiontime", " WHERE folder='sent' AND fromAddress=? ORDER BY lastactiontime",
fromAddress fromAddress
) )
data = [] return {"sentMessages": [
for (msgid, toAddress, fromAddress, subject, lastactiontime, message, self._dump_sent_message(*data) for data in queryreturn
encodingtype, status, ackdata) in queryreturn: ]}
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
message = shared.fixPotentiallyInvalidUTF8Data(message)
data.append({
'msgid': hexlify(msgid),
'toAddress': toAddress,
'fromAddress': fromAddress,
'subject': base64.b64encode(subject),
'message': base64.b64encode(message),
'encodingType': encodingtype,
'lastActionTime': lastactiontime,
'status': status,
'ackData': hexlify(ackdata)
})
return {"sentMessages": data}
@command('getSentMessageByAckData') @command('getSentMessageByAckData')
def HandleGetSentMessagesByAckData(self, ackData): def HandleGetSentMessagesByAckData(self, ackData):
@ -815,23 +772,11 @@ class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler, object):
) )
try: try:
(msgid, toAddress, fromAddress, subject, lastactiontime, return {"sentMessage": [
message, encodingtype, status, ackdata) = queryreturn[0] self._dump_sent_message(*queryreturn[0])
]}
except IndexError: except IndexError:
return # FIXME inconsistent pass # FIXME inconsistent
subject = shared.fixPotentiallyInvalidUTF8Data(subject)
message = shared.fixPotentiallyInvalidUTF8Data(message)
return {"sentMessage": [{
'msgid': hexlify(msgid),
'toAddress': toAddress,
'fromAddress': fromAddress,
'subject': base64.b64encode(subject),
'message': base64.b64encode(message),
'encodingType': encodingtype,
'lastActionTime': lastactiontime,
'status': status,
'ackData': hexlify(ackdata)
}]}
@command('trashMessage') @command('trashMessage')
def HandleTrashMessage(self, msgid): def HandleTrashMessage(self, msgid):