29 lines
651 B
Go
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 }
|