1package eventconsumer
2
3import (
4 "fmt"
5 "net/url"
6)
7
8type KnotSource struct {
9 Knot string
10}
11
12func (k KnotSource) Key() string {
13 return k.Knot
14}
15
16func (k KnotSource) Url(cursor int64, dev bool) (*url.URL, error) {
17 scheme := "wss"
18 if dev {
19 scheme = "ws"
20 }
21
22 u, err := url.Parse(scheme + "://" + k.Knot + "/events")
23 if err != nil {
24 return nil, err
25 }
26
27 if cursor != 0 {
28 query := url.Values{}
29 query.Add("cursor", fmt.Sprintf("%d", cursor))
30 u.RawQuery = query.Encode()
31 }
32 return u, nil
33}
34
35func NewKnotSource(knot string) KnotSource {
36 return KnotSource{
37 Knot: knot,
38 }
39}