mirror of
https://github.com/navidrome/navidrome.git
synced 2026-05-03 06:51:16 +00:00
128 lines
3.6 KiB
Go
128 lines
3.6 KiB
Go
// Code generated by hostgen. DO NOT EDIT.
|
|
//
|
|
// This file contains client wrappers for the Library host service.
|
|
// It is intended for use in Navidrome plugins built with TinyGo.
|
|
//
|
|
//go:build wasip1
|
|
|
|
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
|
|
"github.com/extism/go-pdk"
|
|
)
|
|
|
|
// Library represents a music library with metadata.
|
|
// This type mirrors the host.Library type from plugins/host/library.go.
|
|
type Library struct {
|
|
ID int32 `json:"id"`
|
|
Name string `json:"name"`
|
|
Path string `json:"path,omitempty"`
|
|
MountPoint string `json:"mountPoint,omitempty"`
|
|
LastScanAt int64 `json:"lastScanAt"`
|
|
TotalSongs int32 `json:"totalSongs"`
|
|
TotalAlbums int32 `json:"totalAlbums"`
|
|
TotalArtists int32 `json:"totalArtists"`
|
|
TotalSize int64 `json:"totalSize"`
|
|
TotalDuration float64 `json:"totalDuration"`
|
|
}
|
|
|
|
// library_getlibrary is the host function provided by Navidrome.
|
|
//
|
|
//go:wasmimport extism:host/user library_getlibrary
|
|
func library_getlibrary(uint64) uint64
|
|
|
|
// library_getalllibraries is the host function provided by Navidrome.
|
|
//
|
|
//go:wasmimport extism:host/user library_getalllibraries
|
|
func library_getalllibraries(uint64) uint64
|
|
|
|
// LibraryGetLibraryRequest is the request type for Library.GetLibrary.
|
|
type LibraryGetLibraryRequest struct {
|
|
Id int32 `json:"id"`
|
|
}
|
|
|
|
// LibraryGetLibraryResponse is the response type for Library.GetLibrary.
|
|
type LibraryGetLibraryResponse struct {
|
|
Result *Library `json:"result,omitempty"`
|
|
Error string `json:"error,omitempty"`
|
|
}
|
|
|
|
// LibraryGetAllLibrariesResponse is the response type for Library.GetAllLibraries.
|
|
type LibraryGetAllLibrariesResponse struct {
|
|
Result []Library `json:"result,omitempty"`
|
|
Error string `json:"error,omitempty"`
|
|
}
|
|
|
|
// LibraryGetLibrary calls the library_getlibrary host function.
|
|
// GetLibrary retrieves metadata for a specific library by ID.
|
|
//
|
|
// Parameters:
|
|
// - id: The library's unique identifier
|
|
//
|
|
// Returns the library metadata, or an error if the library is not found.
|
|
func LibraryGetLibrary(id int32) (*LibraryGetLibraryResponse, error) {
|
|
// Marshal request to JSON
|
|
req := LibraryGetLibraryRequest{
|
|
Id: id,
|
|
}
|
|
reqBytes, err := json.Marshal(req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
reqMem := pdk.AllocateBytes(reqBytes)
|
|
defer reqMem.Free()
|
|
|
|
// Call the host function
|
|
responsePtr := library_getlibrary(reqMem.Offset())
|
|
|
|
// Read the response from memory
|
|
responseMem := pdk.FindMemory(responsePtr)
|
|
responseBytes := responseMem.ReadBytes()
|
|
|
|
// Parse the response
|
|
var response LibraryGetLibraryResponse
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Convert Error field to Go error
|
|
if response.Error != "" {
|
|
return nil, errors.New(response.Error)
|
|
}
|
|
|
|
return &response, nil
|
|
}
|
|
|
|
// LibraryGetAllLibraries calls the library_getalllibraries host function.
|
|
// GetAllLibraries retrieves metadata for all configured libraries.
|
|
//
|
|
// Returns a slice of all libraries with their metadata.
|
|
func LibraryGetAllLibraries() (*LibraryGetAllLibrariesResponse, error) {
|
|
// No parameters - allocate empty JSON object
|
|
reqMem := pdk.AllocateBytes([]byte("{}"))
|
|
defer reqMem.Free()
|
|
|
|
// Call the host function
|
|
responsePtr := library_getalllibraries(reqMem.Offset())
|
|
|
|
// Read the response from memory
|
|
responseMem := pdk.FindMemory(responsePtr)
|
|
responseBytes := responseMem.ReadBytes()
|
|
|
|
// Parse the response
|
|
var response LibraryGetAllLibrariesResponse
|
|
if err := json.Unmarshal(responseBytes, &response); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Convert Error field to Go error
|
|
if response.Error != "" {
|
|
return nil, errors.New(response.Error)
|
|
}
|
|
|
|
return &response, nil
|
|
}
|