mirror of
https://github.com/jhillyerd/inbucket.git
synced 2026-01-25 04:25:56 +00:00
Renames, closes #69
- storage: rename StoreMessage to Message - storage: rename Message.RawReader() to Source()
This commit is contained in:
@@ -90,8 +90,8 @@ func (m *Message) rawPath() string {
|
||||
return filepath.Join(m.mailbox.path, m.Fid+".raw")
|
||||
}
|
||||
|
||||
// RawReader opens the .raw portion of a Message as an io.ReadCloser
|
||||
func (m *Message) RawReader() (reader io.ReadCloser, err error) {
|
||||
// Source opens the .raw portion of a Message as an io.ReadCloser
|
||||
func (m *Message) Source() (reader io.ReadCloser, err error) {
|
||||
file, err := os.Open(m.rawPath())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -75,14 +75,14 @@ func New(cfg config.DataStoreConfig) storage.Store {
|
||||
}
|
||||
|
||||
// AddMessage adds a message to the specified mailbox.
|
||||
func (fs *Store) AddMessage(m storage.StoreMessage) (id string, err error) {
|
||||
func (fs *Store) AddMessage(m storage.Message) (id string, err error) {
|
||||
mb, err := fs.mbox(m.Mailbox())
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
mb.Lock()
|
||||
defer mb.Unlock()
|
||||
r, err := m.RawReader()
|
||||
r, err := m.Source()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
@@ -136,7 +136,7 @@ func (fs *Store) AddMessage(m storage.StoreMessage) (id string, err error) {
|
||||
}
|
||||
|
||||
// GetMessage returns the messages in the named mailbox, or an error.
|
||||
func (fs *Store) GetMessage(mailbox, id string) (storage.StoreMessage, error) {
|
||||
func (fs *Store) GetMessage(mailbox, id string) (storage.Message, error) {
|
||||
mb, err := fs.mbox(mailbox)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -147,7 +147,7 @@ func (fs *Store) GetMessage(mailbox, id string) (storage.StoreMessage, error) {
|
||||
}
|
||||
|
||||
// GetMessages returns the messages in the named mailbox, or an error.
|
||||
func (fs *Store) GetMessages(mailbox string) ([]storage.StoreMessage, error) {
|
||||
func (fs *Store) GetMessages(mailbox string) ([]storage.Message, error) {
|
||||
mb, err := fs.mbox(mailbox)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -181,7 +181,7 @@ func (fs *Store) PurgeMessages(mailbox string) error {
|
||||
|
||||
// VisitMailboxes accepts a function that will be called with the messages in each mailbox while it
|
||||
// continues to return true.
|
||||
func (fs *Store) VisitMailboxes(f func([]storage.StoreMessage) (cont bool)) error {
|
||||
func (fs *Store) VisitMailboxes(f func([]storage.Message) (cont bool)) error {
|
||||
infos1, err := ioutil.ReadDir(fs.mailPath)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -133,7 +133,7 @@ func TestFSMissing(t *testing.T) {
|
||||
assert.Nil(t, err)
|
||||
|
||||
// Try to read parts of message
|
||||
_, err = msg.RawReader()
|
||||
_, err = msg.Source()
|
||||
assert.Error(t, err)
|
||||
|
||||
if t.Failed() {
|
||||
|
||||
@@ -28,13 +28,13 @@ type mbox struct {
|
||||
|
||||
// getMessages scans the mailbox directory for .gob files and decodes them into
|
||||
// a slice of Message objects.
|
||||
func (mb *mbox) getMessages() ([]storage.StoreMessage, error) {
|
||||
func (mb *mbox) getMessages() ([]storage.Message, error) {
|
||||
if !mb.indexLoaded {
|
||||
if err := mb.readIndex(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
messages := make([]storage.StoreMessage, len(mb.messages))
|
||||
messages := make([]storage.Message, len(mb.messages))
|
||||
for i, m := range mb.messages {
|
||||
messages[i] = m
|
||||
}
|
||||
@@ -42,7 +42,7 @@ func (mb *mbox) getMessages() ([]storage.StoreMessage, error) {
|
||||
}
|
||||
|
||||
// getMessage decodes a single message by ID and returns a Message object.
|
||||
func (mb *mbox) getMessage(id string) (storage.StoreMessage, error) {
|
||||
func (mb *mbox) getMessage(id string) (storage.Message, error) {
|
||||
if !mb.indexLoaded {
|
||||
if err := mb.readIndex(); err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -119,7 +119,7 @@ func (rs *RetentionScanner) DoScan() error {
|
||||
cutoff := time.Now().Add(-1 * rs.retentionPeriod)
|
||||
retained := 0
|
||||
// Loop over all mailboxes.
|
||||
err := rs.ds.VisitMailboxes(func(messages []StoreMessage) bool {
|
||||
err := rs.ds.VisitMailboxes(func(messages []Message) bool {
|
||||
for _, msg := range messages {
|
||||
if msg.Date().Before(cutoff) {
|
||||
log.Tracef("Purging expired message %v/%v", msg.Mailbox(), msg.ID())
|
||||
|
||||
@@ -37,13 +37,13 @@ func TestDoRetentionScan(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
// Delete should not have been called on new messages
|
||||
for _, m := range []storage.StoreMessage{new1, new2, new3} {
|
||||
for _, m := range []storage.Message{new1, new2, new3} {
|
||||
if ds.MessageDeleted(m) {
|
||||
t.Errorf("Expected %v to be present, was deleted", m.ID())
|
||||
}
|
||||
}
|
||||
// Delete should have been called once on old messages
|
||||
for _, m := range []storage.StoreMessage{old1, old2, old3} {
|
||||
for _, m := range []storage.Message{old1, old2, old3} {
|
||||
if !ds.MessageDeleted(m) {
|
||||
t.Errorf("Expected %v to be deleted, was present", m.ID())
|
||||
}
|
||||
@@ -51,7 +51,7 @@ func TestDoRetentionScan(t *testing.T) {
|
||||
}
|
||||
|
||||
// stubMessage creates a message stub of a specific age
|
||||
func stubMessage(mailbox string, ageHours int) storage.StoreMessage {
|
||||
func stubMessage(mailbox string, ageHours int) storage.Message {
|
||||
return &message.Delivery{
|
||||
Meta: message.Metadata{
|
||||
Mailbox: mailbox,
|
||||
|
||||
@@ -19,22 +19,22 @@ var (
|
||||
// Store is the interface Inbucket uses to interact with storage implementations.
|
||||
type Store interface {
|
||||
// AddMessage stores the message, message ID and Size will be ignored.
|
||||
AddMessage(message StoreMessage) (id string, err error)
|
||||
GetMessage(mailbox, id string) (StoreMessage, error)
|
||||
GetMessages(mailbox string) ([]StoreMessage, error)
|
||||
AddMessage(message Message) (id string, err error)
|
||||
GetMessage(mailbox, id string) (Message, error)
|
||||
GetMessages(mailbox string) ([]Message, error)
|
||||
PurgeMessages(mailbox string) error
|
||||
RemoveMessage(mailbox, id string) error
|
||||
VisitMailboxes(f func([]StoreMessage) (cont bool)) error
|
||||
VisitMailboxes(f func([]Message) (cont bool)) error
|
||||
}
|
||||
|
||||
// StoreMessage represents a message to be stored, or returned from a storage implementation.
|
||||
type StoreMessage interface {
|
||||
// Message represents a message to be stored, or returned from a storage implementation.
|
||||
type Message interface {
|
||||
Mailbox() string
|
||||
ID() string
|
||||
From() *mail.Address
|
||||
To() []*mail.Address
|
||||
Date() time.Time
|
||||
Subject() string
|
||||
RawReader() (reader io.ReadCloser, err error)
|
||||
Source() (io.ReadCloser, error)
|
||||
Size() int64
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user