// Copyright © WireMock.Net using System; using System.Collections.Generic; using System.Linq; using MimeKit; using Stef.Validation; using WireMock.Models.Mime; namespace WireMock.Models; /// /// A wrapper class that implements the interface by wrapping an interface. /// /// /// This class provides a simplified, read-only view of an . /// internal class MimeMessageDataWrapper : IMimeMessageData { private readonly IMimeMessage _message; /// /// Initializes a new instance of the class. /// /// The MIME message to wrap. public MimeMessageDataWrapper(IMimeMessage message) { _message = Guard.NotNull(message); Bcc = _message.Bcc.Select(h => h.ToString()).ToList(); Cc = _message.Cc.Select(h => h.ToString()).ToList(); From = _message.From.Select(h => h.ToString()).ToList(); Headers = _message.Headers.Select(h => h.ToString()).ToList(); References = _message.References.ToList(); ReplyTo = _message.ReplyTo.Select(h => h.ToString()).ToList(); ResentBcc = _message.ResentBcc.Select(h => h.ToString()).ToList(); ResentCc = _message.ResentCc.Select(h => h.ToString()).ToList(); ResentFrom = _message.ResentFrom.Select(h => h.ToString()).ToList(); ResentReplyTo = _message.ResentReplyTo.Select(h => h.ToString()).ToList(); ResentTo = _message.ResentTo.Select(h => h.ToString()).ToList(); To = _message.To.Select(h => h.ToString()).ToList(); Body = new MimeEntityDataWrapper(_message.Body); BodyParts = _message.BodyParts.OfType().Select(mp => new MimePartDataWrapper(mp)).ToList(); Attachments = _message.Attachments.Select(me => new MimeEntityDataWrapper(me)).ToList(); } /// public IList Headers { get; private set; } /// public int Importance => (int)_message.Importance; /// public int Priority => (int)_message.Priority; /// public int XPriority => (int)_message.XPriority; /// public string Sender => _message.Sender.Address; /// public string ResentSender => _message.ResentSender.ToString(); /// public IList From { get; private set; } /// public IList ResentFrom { get; private set; } /// public IList ReplyTo { get; private set; } /// public IList ResentReplyTo { get; private set; } /// public IList To { get; private set; } /// public IList ResentTo { get; private set; } /// public IList Cc { get; private set; } /// public IList ResentCc { get; private set; } /// public IList Bcc { get; private set; } /// public IList ResentBcc { get; private set; } /// public string Subject => _message.Subject; /// public DateTimeOffset Date => _message.Date; /// public DateTimeOffset ResentDate => _message.ResentDate; /// public IList References { get; private set; } /// public string InReplyTo => _message.InReplyTo; /// public string MessageId => _message.MessageId; /// public string ResentMessageId => _message.ResentMessageId; /// public Version MimeVersion => _message.MimeVersion; /// public IMimeEntityData Body { get; private set; } /// public string TextBody => _message.TextBody; /// public string HtmlBody => _message.HtmlBody; /// public IList BodyParts { get; private set; } /// public IList Attachments { get; private set; } /// public override string ToString() { return _message.ToString(); } }