76 lines
2.0 KiB
Go
76 lines
2.0 KiB
Go
package types
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
// MaxLimitInMessagesRequest represents the maximum number of messages
|
|
// that can be requested from the mailserver
|
|
MaxLimitInMessagesRequest = 1000
|
|
)
|
|
|
|
// MessagesRequest contains details of a request of historic messages.
|
|
type MessagesRequest struct {
|
|
// ID of the request. The current implementation requires ID to be 32-byte array,
|
|
// however, it's not enforced for future implementation.
|
|
ID []byte `json:"id"`
|
|
// From is a lower bound of time range.
|
|
From uint32 `json:"from"`
|
|
// To is a upper bound of time range.
|
|
To uint32 `json:"to"`
|
|
// Limit determines the number of messages sent by the mail server
|
|
// for the current paginated request.
|
|
Limit uint32 `json:"limit"`
|
|
// Cursor is used as starting point for paginated requests.
|
|
Cursor []byte `json:"cursor"`
|
|
// Bloom is a filter to match requested messages.
|
|
Bloom []byte `json:"bloom"`
|
|
}
|
|
|
|
// SetDefaults sets the From and To defaults
|
|
func (r *MessagesRequest) SetDefaults(now time.Time) {
|
|
// set From and To defaults
|
|
if r.To == 0 {
|
|
r.To = uint32(now.UTC().Unix())
|
|
}
|
|
|
|
if r.From == 0 {
|
|
oneDay := uint32(86400) // -24 hours
|
|
if r.To < oneDay {
|
|
r.From = 0
|
|
} else {
|
|
r.From = r.To - oneDay
|
|
}
|
|
}
|
|
}
|
|
|
|
// MailServerResponse is the response payload sent by the mailserver.
|
|
type MailServerResponse struct {
|
|
LastEnvelopeHash Hash
|
|
Cursor []byte
|
|
Error error
|
|
}
|
|
|
|
// SyncMailRequest contains details which envelopes should be synced
|
|
// between Mail Servers.
|
|
type SyncMailRequest struct {
|
|
// Lower is a lower bound of time range for which messages are requested.
|
|
Lower uint32
|
|
// Upper is a lower bound of time range for which messages are requested.
|
|
Upper uint32
|
|
// Bloom is a bloom filter to filter envelopes.
|
|
Bloom []byte
|
|
// Limit is the max number of envelopes to return.
|
|
Limit uint32
|
|
// Cursor is used for pagination of the results.
|
|
Cursor []byte
|
|
}
|
|
|
|
// SyncEventResponse is a response from the Mail Server
|
|
// form which the peer received envelopes.
|
|
type SyncEventResponse struct {
|
|
Cursor []byte
|
|
Error string
|
|
}
|