From a41ea62d2d46dedd3208ca77c2b175345927d40c Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 12 May 2021 11:24:44 +0200 Subject: [PATCH] Add api for injecting events --- api/endpoints_modules.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 api/endpoints_modules.go diff --git a/api/endpoints_modules.go b/api/endpoints_modules.go new file mode 100644 index 0000000..da124b9 --- /dev/null +++ b/api/endpoints_modules.go @@ -0,0 +1,36 @@ +package api + +import ( + "errors" + "fmt" +) + +func registerModulesEndpoints() error { + if err := RegisterEndpoint(Endpoint{ + Path: "modules/{moduleName:.+}/trigger/{eventName:.+}", + Write: PermitSelf, + ActionFunc: triggerEvent, + Name: "Export Configuration Options", + Description: "Returns a list of all registered configuration options and their metadata. This does not include the current active or default settings.", + }); err != nil { + return err + } + + return nil +} + +func triggerEvent(ar *Request) (msg string, err error) { + // Get parameters. + moduleName := ar.URLVars["moduleName"] + eventName := ar.URLVars["eventName"] + if moduleName == "" || eventName == "" { + return "", errors.New("invalid parameters") + } + + // Inject event. + if err := module.InjectEvent("api event injection", moduleName, eventName, nil); err != nil { + return "", fmt.Errorf("failed to inject event: %w", err) + } + + return "event successfully injected", nil +}