61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
|
|
// Test Config plugin for Navidrome plugin system integration tests.
|
||
|
|
// Build with: tinygo build -o ../test-config.wasm -target wasip1 -buildmode=c-shared .
|
||
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/navidrome/navidrome/plugins/pdk/go/host"
|
||
|
|
"github.com/navidrome/navidrome/plugins/pdk/go/pdk"
|
||
|
|
)
|
||
|
|
|
||
|
|
// TestConfigInput is the input for nd_test_config callback.
|
||
|
|
type TestConfigInput struct {
|
||
|
|
Operation string `json:"operation"` // "get", "get_int", "list"
|
||
|
|
Key string `json:"key"` // For get/get_int operations
|
||
|
|
Prefix string `json:"prefix"` // For list operation
|
||
|
|
}
|
||
|
|
|
||
|
|
// TestConfigOutput is the output from nd_test_config callback.
|
||
|
|
type TestConfigOutput struct {
|
||
|
|
StringVal string `json:"string_val,omitempty"`
|
||
|
|
IntVal int64 `json:"int_val,omitempty"`
|
||
|
|
Keys []string `json:"keys,omitempty"`
|
||
|
|
Exists bool `json:"exists,omitempty"`
|
||
|
|
Error *string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// nd_test_config is the test callback that tests the config host functions.
|
||
|
|
//
|
||
|
|
//go:wasmexport nd_test_config
|
||
|
|
func ndTestConfig() int32 {
|
||
|
|
var input TestConfigInput
|
||
|
|
if err := pdk.InputJSON(&input); err != nil {
|
||
|
|
errStr := err.Error()
|
||
|
|
pdk.OutputJSON(TestConfigOutput{Error: &errStr})
|
||
|
|
return 0
|
||
|
|
}
|
||
|
|
|
||
|
|
switch input.Operation {
|
||
|
|
case "get":
|
||
|
|
value, exists := host.ConfigGet(input.Key)
|
||
|
|
pdk.OutputJSON(TestConfigOutput{StringVal: value, Exists: exists})
|
||
|
|
return 0
|
||
|
|
|
||
|
|
case "get_int":
|
||
|
|
value, exists := host.ConfigGetInt(input.Key)
|
||
|
|
pdk.OutputJSON(TestConfigOutput{IntVal: value, Exists: exists})
|
||
|
|
return 0
|
||
|
|
|
||
|
|
case "list":
|
||
|
|
keys := host.ConfigKeys(input.Prefix)
|
||
|
|
pdk.OutputJSON(TestConfigOutput{Keys: keys})
|
||
|
|
return 0
|
||
|
|
|
||
|
|
default:
|
||
|
|
errStr := "unknown operation: " + input.Operation
|
||
|
|
pdk.OutputJSON(TestConfigOutput{Error: &errStr})
|
||
|
|
return 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func main() {}
|