1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-17 09:37:02 +00:00

storage: Store addresses as mail.Address for #69

This commit is contained in:
James Hillyerd
2018-03-11 16:56:09 -07:00
parent 487e491d6f
commit 3bc66d2788
9 changed files with 49 additions and 33 deletions

View File

@@ -22,8 +22,8 @@ type Message struct {
// Stored in GOB
Fid string
Fdate time.Time
Ffrom string
Fto []string
Ffrom *mail.Address
Fto []*mail.Address
Fsubject string
Fsize int64
// These are for creating new messages only
@@ -71,12 +71,12 @@ func (m *Message) Date() time.Time {
}
// From returns the value of the Message From header
func (m *Message) From() string {
func (m *Message) From() *mail.Address {
return m.Ffrom
}
// To returns the value of the Message To header
func (m *Message) To() []string {
func (m *Message) To() []*mail.Address {
return m.Fto
}
@@ -220,19 +220,17 @@ func (m *Message) Close() error {
// Only public fields are stored in gob, hence starting with capital F
// Parse From address
if address, err := mail.ParseAddress(body.GetHeader("From")); err == nil {
m.Ffrom = address.String()
m.Ffrom = address
} else {
m.Ffrom = body.GetHeader("From")
m.Ffrom = &mail.Address{Address: body.GetHeader("From")}
}
m.Fsubject = body.GetHeader("Subject")
// Turn the To header into a slice
if addresses, err := body.AddressList("To"); err == nil {
for _, a := range addresses {
m.Fto = append(m.Fto, a.String())
}
m.Fto = addresses
} else {
m.Fto = []string{body.GetHeader("To")}
m.Fto = []*mail.Address{{Address: body.GetHeader("To")}}
}
// Refresh the index before adding our message

View File

@@ -36,8 +36,8 @@ type Store interface {
type StoreMessage interface {
Mailbox() string
ID() string
From() string
To() []string
From() *mail.Address
To() []*mail.Address
Date() time.Time
Subject() string
RawReader() (reader io.ReadCloser, err error)

View File

@@ -74,15 +74,15 @@ func (m *MockMessage) ID() string {
}
// From mock function
func (m *MockMessage) From() string {
func (m *MockMessage) From() *mail.Address {
args := m.Called()
return args.String(0)
return args.Get(0).(*mail.Address)
}
// To mock function
func (m *MockMessage) To() []string {
func (m *MockMessage) To() []*mail.Address {
args := m.Called()
return args.Get(0).([]string)
return args.Get(0).([]*mail.Address)
}
// Date mock function