mirror of
https://github.com/status-im/go-waku.git
synced 2025-01-17 17:20:59 +00:00
92 lines
2.1 KiB
Go
92 lines
2.1 KiB
Go
package pb
|
|
|
|
import (
|
|
"errors"
|
|
)
|
|
|
|
// MaxContentTopics is the maximum number of allowed contenttopics in a query
|
|
const MaxContentTopics = 10
|
|
|
|
var (
|
|
errMissingRequestID = errors.New("missing RequestId field")
|
|
errMessageHashOtherFields = errors.New("cannot use MessageHashes with ContentTopics/PubsubTopic")
|
|
errRequestIDMismatch = errors.New("requestID in response does not match request")
|
|
errMaxContentTopics = errors.New("exceeds the maximum number of ContentTopics allowed")
|
|
errEmptyContentTopic = errors.New("one or more content topics specified is empty")
|
|
errMissingPubsubTopic = errors.New("missing PubsubTopic field")
|
|
errMissingStatusCode = errors.New("missing StatusCode field")
|
|
errInvalidTimeRange = errors.New("invalid time range")
|
|
errInvalidMessageHash = errors.New("invalid message hash")
|
|
)
|
|
|
|
func (x *StoreQueryRequest) Validate() error {
|
|
if x.RequestId == "" {
|
|
return errMissingRequestID
|
|
}
|
|
|
|
if len(x.MessageHashes) != 0 {
|
|
if len(x.ContentTopics) != 0 || x.GetPubsubTopic() != "" {
|
|
return errMessageHashOtherFields
|
|
}
|
|
|
|
for _, x := range x.MessageHashes {
|
|
if len(x) != 32 {
|
|
return errInvalidMessageHash
|
|
}
|
|
}
|
|
} else {
|
|
if x.GetPubsubTopic() == "" {
|
|
return errMissingPubsubTopic
|
|
}
|
|
|
|
if len(x.ContentTopics) > MaxContentTopics {
|
|
return errMaxContentTopics
|
|
} else {
|
|
for _, m := range x.ContentTopics {
|
|
if m == "" {
|
|
return errEmptyContentTopic
|
|
}
|
|
}
|
|
}
|
|
|
|
if x.GetTimeStart() > 0 && x.GetTimeEnd() > 0 && x.GetTimeStart() > x.GetTimeEnd() {
|
|
return errInvalidTimeRange
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *StoreQueryResponse) Validate(requestID string) error {
|
|
if x.RequestId != "" && x.RequestId != requestID {
|
|
return errRequestIDMismatch
|
|
}
|
|
|
|
if x.StatusCode == nil {
|
|
return errMissingStatusCode
|
|
}
|
|
|
|
for _, m := range x.Messages {
|
|
if err := m.Validate(); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (x *WakuMessageKeyValue) Validate() error {
|
|
if len(x.MessageHash) != 32 {
|
|
return errInvalidMessageHash
|
|
}
|
|
|
|
if x.Message != nil {
|
|
if x.GetPubsubTopic() == "" {
|
|
return errMissingPubsubTopic
|
|
}
|
|
|
|
return x.Message.Validate()
|
|
}
|
|
|
|
return nil
|
|
}
|