This commit is contained in:
Balakrishnan Balasubramanian 2024-04-01 11:11:07 -04:00
parent 829be8413b
commit ed18b0c89c
3 changed files with 21 additions and 3 deletions

View File

@ -29,7 +29,7 @@ from .poputils import (
end,
Request,
MailEntry,
get_mail,
get_mail_fp,
get_mails_list,
MailList,
)
@ -217,7 +217,12 @@ def trans_command_retr(mails: MailList, req: Request) -> None:
entry = mails.get(req.arg1)
if entry:
write(ok("Contents follow"))
write(get_mail(entry))
with get_mail_fp(entry) as fp:
for line in fp:
if line[0] == b'.':
write(b'.')
write(line)
# write(get_mail(entry))
write(end())
mails.delete(req.arg1)
else:

View File

@ -2,6 +2,7 @@ import os
from dataclasses import dataclass
from enum import Enum, auto
from pathlib import Path
from contextlib import contextmanager
class ClientError(Exception):
@ -124,6 +125,12 @@ def set_nid(entries: list[MailEntry]):
entry.nid = i
@contextmanager
def get_mail_fp(entry: MailEntry):
with open(entry.path, mode="rb") as fp:
yield fp
def get_mail(entry: MailEntry) -> bytes:
with open(entry.path, mode="rb") as fp:
return fp.read()

View File

@ -21,7 +21,13 @@ AQXWXSWNGAEPGIMG2F3QDKBXL3MRHY6K2BPID64ZR6LABLPVSF
TEST_USER = "foobar"
TEST_MBOX = "foobar_mails"
USERS = [User(username=TEST_USER, password_hash=TEST_HASH, mbox=TEST_MBOX)]
TEST_USER2 = "foo2"
TEST_MBOX2 = "foo2mails"
USERS = [
User(username=TEST_USER, password_hash=TEST_HASH, mbox=TEST_MBOX),
User(username=TEST_USER2, password_hash=TEST_HASH, mbox=TEST_MBOX2),
]
MAILS_PATH: Path