39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
import argparse
|
|
import base64
|
|
import json
|
|
import xmlrpclib
|
|
|
|
def get_next_message(api, to_address, prev_id):
|
|
messages = json.loads(api.getAllInboxMessages())['inboxMessages']
|
|
messages = [m for m in messages if m['toAddress'] == to_address]
|
|
if len(messages) == 0:
|
|
return None
|
|
if not prev_id:
|
|
return messages[0]
|
|
for (prev, next) in zip(messages, messages[1:]):
|
|
if prev['msgid'] == prev_id:
|
|
return next
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('--prev-id')
|
|
parser.add_argument('--api', default="http://username:password@127.0.0.1:8442/")
|
|
parser.add_argument('--to-address')
|
|
parser.add_argument('--from-address')
|
|
parser.add_argument('--output-id')
|
|
parser.add_argument('--output-text')
|
|
args = parser.parse_args()
|
|
api = xmlrpclib.ServerProxy(args.api)
|
|
next_message = get_next_message(api, args.to_address, args.prev_id)
|
|
if not next_message:
|
|
return
|
|
with open(args.output_text, 'w') as f:
|
|
f.write(base64.b64decode(next_message['message']))
|
|
with open(args.output_id, 'w') as f:
|
|
f.write(next_message['msgid'])
|
|
with open(args.from_address, 'w') as f:
|
|
f.write(next_message['fromAddress'])
|
|
|
|
if __name__ == '__main__':
|
|
main()
|