twitch-bot/internal/apimodules/msgformat/msgformat.go
2022-01-20 02:03:52 +01:00

52 lines
1.2 KiB
Go

package msgformat
import (
"fmt"
"net/http"
"github.com/pkg/errors"
"github.com/Luzifer/twitch-bot/plugins"
)
var formatMessage plugins.MsgFormatter
func Register(args plugins.RegistrationArguments) error {
formatMessage = args.FormatMessage
args.RegisterAPIRoute(plugins.HTTPRouteRegistrationArgs{
HandlerFunc: handleFormattedMessage,
Method: http.MethodGet,
Module: "msgformat",
Path: "/format",
QueryParams: []plugins.HTTPRouteParamDocumentation{
{
Description: "The template to execute",
Name: "template",
Required: true,
Type: "string",
},
},
RequiresWriteAuth: true, // This module can potentially be used to harvest data / read internal variables so it is handled as a write-module
ResponseType: plugins.HTTPRouteResponseTypeTextPlain,
})
return nil
}
func handleFormattedMessage(w http.ResponseWriter, r *http.Request) {
tpl := r.FormValue("template")
if tpl == "" {
w.WriteHeader(http.StatusNoContent)
return
}
msg, err := formatMessage(tpl, nil, nil, nil)
if err != nil {
http.Error(w, errors.Wrap(err, "executing template").Error(), http.StatusInternalServerError)
return
}
fmt.Fprint(w, msg)
}