// 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();
}
}