Deluan 605792d7f8 feat: add GetAdmins method to retrieve admin users from the plugin
Signed-off-by: Deluan <deluan@navidrome.org>
2026-01-12 08:16:08 -05:00

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() {}