MCPcopy
hub / github.com/gotify/server / NewManager

Function NewManager

plugin/manager.go:57–101  ·  view source on GitHub ↗

NewManager created a Manager from configurations.

(db Database, directory string, mux *gin.RouterGroup, notifier Notifier)

Source from the content-addressed store, hash-verified

55
56// NewManager created a Manager from configurations.
57func NewManager(db Database, directory string, mux *gin.RouterGroup, notifier Notifier) (*Manager, error) {
58 manager := &Manager{
59 mutex: &sync.RWMutex{},
60 instances: map[uint]compat.PluginInstance{},
61 plugins: map[string]compat.Plugin{},
62 messages: make(chan MessageWithUserID),
63 db: db,
64 mux: mux,
65 }
66
67 go func() {
68 for {
69 message := <-manager.messages
70 internalMsg := &model.Message{
71 ApplicationID: message.Message.ApplicationID,
72 Title: message.Message.Title,
73 Priority: *message.Message.Priority,
74 Date: message.Message.Date,
75 Message: message.Message.Message,
76 }
77 if message.Message.Extras != nil {
78 internalMsg.Extras, _ = json.Marshal(message.Message.Extras)
79 }
80 db.CreateMessage(internalMsg)
81 message.Message.ID = internalMsg.ID
82 notifier.Notify(message.UserID, &message.Message)
83 }
84 }()
85
86 if err := manager.loadPlugins(directory); err != nil {
87 return nil, err
88 }
89
90 users, err := manager.db.GetUsers()
91 if err != nil {
92 return nil, err
93 }
94 for _, user := range users {
95 if err := manager.initializeForUser(*user); err != nil {
96 return nil, err
97 }
98 }
99
100 return manager, nil
101}
102
103// ErrAlreadyEnabledOrDisabled is returned on SetPluginEnabled call when a plugin is already enabled or disabled.
104var ErrAlreadyEnabledOrDisabled = errors.New("config is already enabled/disabled")

Calls 5

loadPluginsMethod · 0.95
initializeForUserMethod · 0.95
CreateMessageMethod · 0.65
NotifyMethod · 0.65
GetUsersMethod · 0.65

Used in the wild real call sites across dependent graphs

searching dependent graphs…