implement sub/unsub topic
This commit is contained in:
parent
4c5d75dda6
commit
9970b02567
|
@ -55,4 +55,9 @@ func main() {
|
||||||
Category: "order",
|
Category: "order",
|
||||||
})
|
})
|
||||||
fmt.Println("Count: 2", total, err)
|
fmt.Println("Count: 2", total, err)
|
||||||
|
|
||||||
|
err = c.Subscribe("test", []string{
|
||||||
|
"eX1gEc7WokSHh-zJ3WR5Hn:APA91bFZDuzkjjFFL6TNpMg0ot93a0wsypWi4aCdm7M2x6AihgjS_QWsbKSFCT4hNhv_d8wKGy-DG6_3e8OlwPiWiJB4R33xLbbUekgxKcfCiiFooIC1E1OE3XWkvUtn4egn8aLG5jqv",
|
||||||
|
})
|
||||||
|
fmt.Println("Subscribe err: ", err)
|
||||||
}
|
}
|
||||||
|
|
21
model.go
21
model.go
|
@ -75,11 +75,6 @@ type Read struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadResponse ...
|
|
||||||
type ReadResponse struct {
|
|
||||||
Error string `json:"error"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type read struct {
|
type read struct {
|
||||||
APIKey string `json:"apiKey"`
|
APIKey string `json:"apiKey"`
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
|
@ -101,3 +96,19 @@ type countUnread struct {
|
||||||
User string `json:"user"`
|
User string `json:"user"`
|
||||||
Category string `json:"category"`
|
Category string `json:"category"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CommonError ...
|
||||||
|
type CommonError struct {
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subscribe ...
|
||||||
|
type Subscribe struct {
|
||||||
|
Tokens []string `json:"tokens"`
|
||||||
|
Topic string `json:"topic"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type subscribe struct {
|
||||||
|
Subscribe
|
||||||
|
APIKey string `json:"apiKey"`
|
||||||
|
}
|
||||||
|
|
|
@ -18,6 +18,8 @@ const (
|
||||||
SubjectGetNotification = "get_notification"
|
SubjectGetNotification = "get_notification"
|
||||||
SubjectReadNotification = "read_notification"
|
SubjectReadNotification = "read_notification"
|
||||||
SubjectCountUnreadNotification = "count_unread_notification"
|
SubjectCountUnreadNotification = "count_unread_notification"
|
||||||
|
SubjectSubscribeTopic = "subscribe_topic"
|
||||||
|
SubjectUnsubscribeTopic = "unsubscribe_topic"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Client ...
|
// Client ...
|
||||||
|
@ -137,7 +139,53 @@ func (c *Client) Read(notificationID string) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
var res ReadResponse
|
var res CommonError
|
||||||
|
if err := json.Unmarshal(msg.Data, &res); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if res.Error != "" {
|
||||||
|
err = errors.New(res.Error)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subscribe tokens to topic
|
||||||
|
func (c *Client) Subscribe(topic string, tokens []string) error {
|
||||||
|
p := subscribe{
|
||||||
|
Subscribe: Subscribe{
|
||||||
|
Tokens: tokens,
|
||||||
|
Topic: topic,
|
||||||
|
},
|
||||||
|
APIKey: c.Config.APIKey,
|
||||||
|
}
|
||||||
|
msg, err := c.natsServer.Request(SubjectSubscribeTopic, toBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
var res CommonError
|
||||||
|
if err := json.Unmarshal(msg.Data, &res); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if res.Error != "" {
|
||||||
|
err = errors.New(res.Error)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unsubscribe tokens from topic
|
||||||
|
func (c *Client) Unsubscribe(topic string, tokens []string) error {
|
||||||
|
p := subscribe{
|
||||||
|
Subscribe: Subscribe{
|
||||||
|
Tokens: tokens,
|
||||||
|
Topic: topic,
|
||||||
|
},
|
||||||
|
APIKey: c.Config.APIKey,
|
||||||
|
}
|
||||||
|
msg, err := c.natsServer.Request(SubjectUnsubscribeTopic, toBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
var res CommonError
|
||||||
if err := json.Unmarshal(msg.Data, &res); err != nil {
|
if err := json.Unmarshal(msg.Data, &res); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue