1
0
Fork 0
mirror of https://github.com/deltachat/deltachat-core.git synced 2025-10-04 10:19:16 +02:00

move get_mime_headers() function to Message object where it belongs.

also simplify creating a mime object from the headers ...
This commit is contained in:
holger krekel 2018-10-17 11:40:48 +02:00
parent e8a1d29125
commit 5ad5baa6ab
3 changed files with 18 additions and 24 deletions

View file

@ -2,7 +2,6 @@
from __future__ import print_function
import threading
import six
import re
import time
import requests
@ -223,26 +222,6 @@ class Account(object):
""" return Message instance. """
return Message.from_db(self._dc_context, msg_id)
def get_mime_headers(self, msg):
""" return mime-header object for an incoming message.
This only returns a non-None object if ``save_mime_headers``
config option was set and ``msg_id`` refers to an incoming
message.
:param msg_id: integer message id
:returns: email-mime message object.
"""
import email.parser
msg_id = getattr(msg, "id", msg)
mime_headers = lib.dc_get_mime_headers(self._dc_context, msg_id)
if mime_headers:
s = ffi.string(mime_headers)
if isinstance(s, bytes):
s = s.decode("ascii")
fp = six.StringIO(s)
return email.parser.Parser().parse(fp)
def mark_seen_messages(self, messages):
""" mark the given set of messages as seen.

View file

@ -109,6 +109,22 @@ class Message(object):
if ts:
return datetime.utcfromtimestamp(ts)
def get_mime_headers(self):
""" return mime-header object for an incoming message.
This only returns a non-None object if ``save_mime_headers``
config option was set and the message is incoming.
:returns: email-mime message object (with headers only, no body).
"""
import email.parser
mime_headers = lib.dc_get_mime_headers(self._dc_context, self.id)
if mime_headers:
s = ffi.string(mime_headers)
if isinstance(s, bytes):
s = s.decode("ascii")
return email.message_from_string(s)
@property
def chat(self):
"""chat this message was posted in.

View file

@ -291,15 +291,14 @@ class TestOnlineAccount:
lp.sec("sending text message from ac1 to ac2")
msg_out = chat.send_text("message1")
ac1._evlogger.get_matching("DC_EVENT_MSG_DELIVERED")
assert ac1.get_mime_headers(msg_out.id) is None
assert msg_out.get_mime_headers() is None
lp.sec("wait for ac2 to receive message")
ev = ac2._evlogger.get_matching("DC_EVENT_MSGS_CHANGED")
in_id = ev[2]
mime = ac2.get_mime_headers(in_id)
mime = ac2.get_message_by_id(in_id).get_mime_headers()
assert mime.get_all("From")
assert mime.get_all("Received")
assert ac2.get_mime_headers(ac2.get_message_by_id(in_id)).get_all("From")
def test_send_and_receive_image(self, acfactory, lp, data):
lp.sec("starting accounts, waiting for configuration")