123456789101112131415161718192021222324252627282930313233343536 |
- package service
- import (
- "context"
- "go-common/app/infra/notify/model"
- "go-common/app/infra/notify/notify"
- "go-common/library/ecode"
- )
- // Pub pub message.
- func (s *Service) Pub(c context.Context, arg *model.ArgPub) (err error) {
- pc, ok := s.pubConfs[key(arg.Group, arg.Topic)]
- if !ok {
- err = ecode.AccessDenied
- return
- }
- s.plock.RLock()
- pub, ok := s.pubs[key(arg.Group, arg.Topic)]
- s.plock.RUnlock()
- if !ok {
- pub, err = notify.NewPub(pc, s.c)
- if err != nil {
- return
- }
- s.plock.Lock()
- s.pubs[key(arg.Group, arg.Topic)] = pub
- s.plock.Unlock()
- }
- if !pub.Auth(arg.AppSecret) {
- err = ecode.AccessDenied
- return
- }
- err = pub.Send([]byte(arg.Key), []byte(arg.Msg))
- return
- }
|