V17 / d6d373561692
MailModels.cs
Services/EmailService/MailModels.cs
Unchanged from the preceding versionCS
namespace Lilith.EmailService;
public sealed record MailAccount(string Nickname, string Address, string Host, int Port, string ProtectedPassword, string Provider = "imap");
public sealed record MailItem(uint Uid, string SenderName, string SenderAddress, string Subject, DateTimeOffset? MessageDate, bool Unread);
public sealed record MailSnapshot(uint Validity, MailItem[] Items);
public sealed record MailCheck(string Nickname, string Mode = "unread", int Limit = 10);
public sealed record MailBatch(string Status, string Nickname, string Mode, string BatchId, uint Validity, uint Cursor, bool FirstCheck, bool MoreAvailable, MailItem[] Messages, string Source = "imap");
public sealed record MailAck(string Nickname, string BatchId);
public sealed record MailCounts(string Nickname, int InboxUnread, string Source);
public sealed record MailRead(string Nickname, uint Validity, uint Uid);
public sealed record MailSenderRule(string Nickname, string Sender, bool Blocked);
public sealed record MailSection(string Nickname, uint Validity, uint Uid, string Section);
public sealed record MailContent(string Status, string Nickname, uint Validity, MailItem Message, string Body, bool Truncated, string Source);
public sealed record MailState(uint Validity = 0, uint Cursor = 0, bool Initialized = false, MailBatch? Pending = null, string? LastAck = null);
public interface IMailReader
{
Task<MailContent> ReadMessageAsync(MailAccount account, string password, uint validity, uint uid, CancellationToken ct);
Task<int> CountUnreadAsync(MailAccount account, string password, CancellationToken ct);
Task<MailSnapshot> ReadAsync(MailAccount account, string password, string mode, uint validity, uint cursor, int limit, CancellationToken ct);
}