sharded-gotify/plugin/example/clock/main.go

64 lines
1.3 KiB
Go

package main
import (
"time"
"github.com/gotify/plugin-api"
"github.com/robfig/cron"
)
// GetGotifyPluginInfo returns gotify plugin info
func GetGotifyPluginInfo() plugin.Info {
return plugin.Info{
Name: "clock",
Description: "Sends an hourly reminder",
ModulePath: "github.com/gotify/server/v2/example/clock",
}
}
// Plugin is plugin instance
type Plugin struct {
msgHandler plugin.MessageHandler
enabled bool
cronHandler *cron.Cron
}
// Enable implements plugin.Plugin
func (c *Plugin) Enable() error {
c.enabled = true
c.cronHandler = cron.New()
c.cronHandler.AddFunc("0 0 * * *", func() {
c.msgHandler.SendMessage(plugin.Message{
Title: "Tick Tock!",
Message: time.Now().Format("It is 15:04:05 now."),
})
})
c.cronHandler.Start()
return nil
}
// Disable implements plugin.Plugin
func (c *Plugin) Disable() error {
if c.cronHandler != nil {
c.cronHandler.Stop()
}
c.enabled = false
return nil
}
// SetMessageHandler implements plugin.Messenger.
func (c *Plugin) SetMessageHandler(h plugin.MessageHandler) {
c.msgHandler = h
}
// NewGotifyPluginInstance creates a plugin instance for a user context.
func NewGotifyPluginInstance(ctx plugin.UserContext) plugin.Plugin {
p := &Plugin{}
return p
}
func main() {
panic("this should be built as go plugin")
}