mirror of
https://github.com/navidrome/navidrome.git
synced 2026-01-03 06:15:22 +00:00
65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
// Test Artwork plugin for Navidrome plugin system integration tests.
|
|
// Build with: tinygo build -o ../test-artwork.wasm -target wasip1 -buildmode=c-shared .
|
|
package main
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/navidrome/navidrome/plugins/pdk/go/host"
|
|
"github.com/navidrome/navidrome/plugins/pdk/go/pdk"
|
|
)
|
|
|
|
// TestInput is the input for nd_test_artwork callback.
|
|
type TestInput struct {
|
|
ArtworkType string `json:"artwork_type"` // "artist", "album", "track", "playlist"
|
|
ID string `json:"id"`
|
|
Size int32 `json:"size"`
|
|
}
|
|
|
|
// TestOutput is the output from nd_test_artwork callback.
|
|
type TestOutput struct {
|
|
URL string `json:"url,omitempty"`
|
|
Error *string `json:"error,omitempty"`
|
|
}
|
|
|
|
// nd_test_artwork is the test callback that tests the artwork host functions.
|
|
//
|
|
//go:wasmexport nd_test_artwork
|
|
func ndTestArtwork() int32 {
|
|
var input TestInput
|
|
if err := pdk.InputJSON(&input); err != nil {
|
|
errStr := err.Error()
|
|
pdk.OutputJSON(TestOutput{Error: &errStr})
|
|
return 0
|
|
}
|
|
|
|
var url string
|
|
var err error
|
|
|
|
switch strings.ToLower(input.ArtworkType) {
|
|
case "artist":
|
|
url, err = host.ArtworkGetArtistUrl(input.ID, input.Size)
|
|
case "album":
|
|
url, err = host.ArtworkGetAlbumUrl(input.ID, input.Size)
|
|
case "track":
|
|
url, err = host.ArtworkGetTrackUrl(input.ID, input.Size)
|
|
case "playlist":
|
|
url, err = host.ArtworkGetPlaylistUrl(input.ID, input.Size)
|
|
default:
|
|
errStr := "unknown artwork type: " + input.ArtworkType
|
|
pdk.OutputJSON(TestOutput{Error: &errStr})
|
|
return 0
|
|
}
|
|
|
|
if err != nil {
|
|
errStr := err.Error()
|
|
pdk.OutputJSON(TestOutput{Error: &errStr})
|
|
return 0
|
|
}
|
|
|
|
pdk.OutputJSON(TestOutput{URL: url})
|
|
return 0
|
|
}
|
|
|
|
func main() {}
|