-
Notifications
You must be signed in to change notification settings - Fork 242
/
community_metrics_request.go
44 lines (34 loc) · 1.17 KB
/
community_metrics_request.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package requests
import (
"errors"
"github.com/status-im/status-go/eth-node/types"
)
var ErrNoCommunityID = errors.New("community metrics request has no community id")
var ErrInvalidTimestampIntervals = errors.New("community metrics request invalid time intervals")
type CommunityMetricsRequestType uint
const (
CommunityMetricsRequestMessagesTimestamps CommunityMetricsRequestType = iota
CommunityMetricsRequestMessagesCount
CommunityMetricsRequestMembers
CommunityMetricsRequestControlNodeUptime
)
type MetricsIntervalRequest struct {
StartTimestamp uint64 `json:"startTimestamp"`
EndTimestamp uint64 `json:"endTimestamp"`
}
type CommunityMetricsRequest struct {
CommunityID types.HexBytes `json:"communityId"`
Type CommunityMetricsRequestType `json:"type"`
Intervals []MetricsIntervalRequest `json:"intervals"`
}
func (r *CommunityMetricsRequest) Validate() error {
if len(r.CommunityID) == 0 {
return ErrNoCommunityID
}
for _, interval := range r.Intervals {
if interval.StartTimestamp == 0 || interval.EndTimestamp == 0 || interval.StartTimestamp >= interval.EndTimestamp {
return ErrInvalidTimestampIntervals
}
}
return nil
}