mcchunkie/plugins/snap.go

60 lines
1.3 KiB
Go
Raw Normal View History

2020-02-23 14:35:07 -07:00
package plugins
import (
"fmt"
"io/ioutil"
"net/http"
"regexp"
"github.com/matrix-org/gomatrix"
)
// Snap responds to OpenBSD snapshot checks
type Snap struct {
}
// Descr describes this plugin
func (p *Snap) Descr() string {
return "checks the current build date of OpenBSD snapshots."
}
// Re returns the federation check matching string
func (p *Snap) Re() string {
return `(?i)^snap:$`
}
// Match determines if we should call the response for Snap
2020-05-13 16:53:31 -06:00
func (p *Snap) Match(_, msg string) bool {
2020-02-23 14:35:07 -07:00
re := regexp.MustCompile(p.Re())
return re.MatchString(msg)
}
// SetStore we don't need a store here.
2020-05-13 16:53:31 -06:00
func (p *Snap) SetStore(_ PluginStore) {}
2020-02-23 14:35:07 -07:00
// Process does the heavy lifting
func (p *Snap) Process(from, post string) string {
2020-02-23 14:35:07 -07:00
resp, err := http.Get("https://ftp.usa.openbsd.org/pub/OpenBSD/snapshots/amd64/BUILDINFO")
if err != nil {
return fmt.Sprintf("%s", err)
2020-02-23 14:35:07 -07:00
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return fmt.Sprintf("%s", err)
2020-02-23 14:35:07 -07:00
}
return string(body)
}
// RespondText to looking up of federation check requests
func (p *Snap) RespondText(c *gomatrix.Client, ev *gomatrix.Event, _, _ string) error {
return SendText(c, ev.RoomID, p.Process("", ""))
2020-02-23 14:35:07 -07:00
}
// Name Snap!
func (p *Snap) Name() string {
return "Snap"
}