62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
|
|
// Test Users plugin for Navidrome plugin system integration tests.
|
||
|
|
// This plugin tests user metadata access via the Users host service.
|
||
|
|
// Build with: tinygo build -o ../test-users.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"
|
||
|
|
)
|
||
|
|
|
||
|
|
// TestUsersInput is the input for nd_test_users callback.
|
||
|
|
type TestUsersInput struct {
|
||
|
|
Operation string `json:"operation"` // "get_users", "get_admins"
|
||
|
|
}
|
||
|
|
|
||
|
|
// TestUsersOutput is the output from nd_test_users callback.
|
||
|
|
type TestUsersOutput struct {
|
||
|
|
Users []host.User `json:"users,omitempty"`
|
||
|
|
Error *string `json:"error,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// nd_test_users is the test callback that tests the users host functions.
|
||
|
|
//
|
||
|
|
//go:wasmexport nd_test_users
|
||
|
|
func ndTestUsers() int32 {
|
||
|
|
var input TestUsersInput
|
||
|
|
if err := pdk.InputJSON(&input); err != nil {
|
||
|
|
errStr := err.Error()
|
||
|
|
pdk.OutputJSON(TestUsersOutput{Error: &errStr})
|
||
|
|
return 0
|
||
|
|
}
|
||
|
|
|
||
|
|
switch input.Operation {
|
||
|
|
case "get_users":
|
||
|
|
users, err := host.UsersGetUsers()
|
||
|
|
if err != nil {
|
||
|
|
errStr := err.Error()
|
||
|
|
pdk.OutputJSON(TestUsersOutput{Error: &errStr})
|
||
|
|
return 0
|
||
|
|
}
|
||
|
|
pdk.OutputJSON(TestUsersOutput{Users: users})
|
||
|
|
return 0
|
||
|
|
|
||
|
|
case "get_admins":
|
||
|
|
admins, err := host.UsersGetAdmins()
|
||
|
|
if err != nil {
|
||
|
|
errStr := err.Error()
|
||
|
|
pdk.OutputJSON(TestUsersOutput{Error: &errStr})
|
||
|
|
return 0
|
||
|
|
}
|
||
|
|
pdk.OutputJSON(TestUsersOutput{Users: admins})
|
||
|
|
return 0
|
||
|
|
|
||
|
|
default:
|
||
|
|
errStr := "unknown operation: " + input.Operation
|
||
|
|
pdk.OutputJSON(TestUsersOutput{Error: &errStr})
|
||
|
|
return 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func main() {}
|