mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 17:47:03 +00:00
- storage: rename StoreMessage to Message - storage: rename Message.RawReader() to Source()
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
// Package storage contains implementation independent datastore logic
|
|
package storage
|
|
|
|
import (
|
|
"errors"
|
|
"io"
|
|
"net/mail"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
// ErrNotExist indicates the requested message does not exist.
|
|
ErrNotExist = errors.New("message does not exist")
|
|
|
|
// ErrNotWritable indicates the message is closed; no longer writable
|
|
ErrNotWritable = errors.New("Message not writable")
|
|
)
|
|
|
|
// 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 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([]Message) (cont bool)) error
|
|
}
|
|
|
|
// 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
|
|
Source() (io.ReadCloser, error)
|
|
Size() int64
|
|
}
|