2022-01-02 08:44:18 -03:00
|
|
|
package nostr
|
2021-02-20 17:44:05 -03:00
|
|
|
|
|
|
|
type Subscription struct {
|
2022-11-06 21:15:42 -03:00
|
|
|
id string
|
|
|
|
conn *Connection
|
2021-02-20 17:44:05 -03:00
|
|
|
|
2022-02-08 16:27:33 -03:00
|
|
|
filters Filters
|
2022-11-06 21:15:42 -03:00
|
|
|
Events chan Event
|
2022-02-07 11:33:45 -03:00
|
|
|
|
|
|
|
stopped bool
|
2021-02-20 17:59:47 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
type EventMessage struct {
|
2022-01-02 08:44:18 -03:00
|
|
|
Event Event
|
2021-02-20 17:59:47 -03:00
|
|
|
Relay string
|
2021-02-20 17:44:05 -03:00
|
|
|
}
|
|
|
|
|
2022-11-06 21:15:42 -03:00
|
|
|
func (sub Subscription) Unsub() {
|
|
|
|
sub.conn.WriteJSON([]interface{}{"CLOSE", sub.id})
|
2021-02-20 17:44:05 -03:00
|
|
|
|
2022-11-06 21:15:42 -03:00
|
|
|
sub.stopped = true
|
|
|
|
if sub.Events != nil {
|
|
|
|
close(sub.Events)
|
2021-02-20 17:44:05 -03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-11-06 21:15:42 -03:00
|
|
|
func (sub *Subscription) Sub(filters Filters) {
|
|
|
|
sub.filters = filters
|
2021-12-16 20:47:53 -03:00
|
|
|
|
2022-11-06 21:15:42 -03:00
|
|
|
message := []interface{}{"REQ", sub.id}
|
|
|
|
for _, filter := range sub.filters {
|
2021-12-16 20:47:53 -03:00
|
|
|
message = append(message, filter)
|
|
|
|
}
|
|
|
|
|
2022-11-06 21:15:42 -03:00
|
|
|
sub.conn.WriteJSON(message)
|
2021-02-20 17:44:05 -03:00
|
|
|
}
|