Files
LambdaMail/services/protocols/internal/domain/valueobject/message_id.go
T

29 lines
651 B
Go

package valueobject
import (
"errors"
"strings"
)
// MessageID is an RFC 5322 Message-ID, always wrapped in angle brackets.
type MessageID struct {
raw string
}
var (
ErrMessageIDEmpty = errors.New("message id: must not be empty")
ErrMessageIDNotBracketed = errors.New("message id: must be wrapped in angle brackets")
)
func NewMessageID(raw string) (MessageID, error) {
if raw == "" {
return MessageID{}, ErrMessageIDEmpty
}
if !strings.HasPrefix(raw, "<") || !strings.HasSuffix(raw, ">") {
return MessageID{}, ErrMessageIDNotBracketed
}
return MessageID{raw: raw}, nil
}
func (m MessageID) String() string { return m.raw }