zapscript

package
v2.10.0-beta2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2026 License: GPL-3.0 Imports: 38 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MIMEZaparooZapScript  = "application/vnd.zaparoo.zapscript"
	WellKnownPath         = "/.well-known/zaparoo"
	HeaderZaparooOS       = "Zaparoo-OS"
	HeaderZaparooArch     = "Zaparoo-Arch"
	HeaderZaparooPlatform = "Zaparoo-Platform"
)
View Source
const ExecuteTimeout = 2 * time.Second

ExecuteTimeout is the maximum duration for execute commands.

Variables

View Source
var (
	ErrArgCount     = errors.New("invalid number of arguments")
	ErrRequiredArgs = errors.New("arguments are required")
	ErrRemoteSource = errors.New("cannot run from remote source")
	ErrFileNotFound = errors.New("file not found")
)
View Source
var (
	ErrNoActiveMedia         = errors.New("no active media")
	ErrNoLauncher            = errors.New("no launcher associated with active media")
	ErrNoControlCapabilities = errors.New("no control capabilities")
)
View Source
var AcceptedMimeTypes = []string{
	MIMEZaparooZapScript,
}
View Source
var ErrControlCommandNotAllowed = errors.New("command not allowed in control context")
View Source
var ErrWellKnownNotFound = errors.New("well-known endpoint not found")

ErrWellKnownNotFound is returned when the .well-known/zaparoo endpoint returns 404, indicating the host does not support Zaparoo.

Functions

func GetExprEnv added in v2.10.0

func IsControlCommand added in v2.10.0

func IsControlCommand(cmdName string) bool

IsControlCommand returns true if the command is the control command. The control command is blocked in control context to prevent recursion where a control's Script invokes another control command.

func IsMediaLaunchingCommand added in v2.7.0

func IsMediaLaunchingCommand(cmdName string) bool

IsMediaLaunchingCommand returns true if the command launches media and should be subject to playtime limits.

func IsPlaylistCommand added in v2.10.0

func IsPlaylistCommand(cmdName string) bool

IsPlaylistCommand returns true if the command is a playlist command. Playlist commands require a PlaylistController and are not safe in control context.

func IsValidCommand added in v2.9.0

func IsValidCommand(cmdName string) bool

IsValidCommand returns true if the command name is a valid ZapScript command.

func ParseAdvArgs added in v2.8.0

func ParseAdvArgs[T any](pl platforms.Platform, env *platforms.CmdEnv, dest *T) error

ParseAdvArgs parses and validates advanced arguments for a command. Returns an error if parsing or validation fails.

func PreWarmZapLinkHosts added in v2.8.0

func PreWarmZapLinkHosts(db *database.Database, checkInternet func(int) bool)

PreWarmZapLinkHosts pre-warms the DNS and TLS cache for known zaplink hosts. This is called during startup to reduce latency on first zaplink access. It makes HEAD requests to /.well-known/zaparoo for each supported base URL.

func PressGamepadSequence added in v2.10.0

func PressGamepadSequence(pl platforms.Platform, args []string) error

PressGamepadSequence presses each button in args sequentially with a delay between each press. Used by both ZapScript commands and API handlers.

func PressKeyboardSequence added in v2.10.0

func PressKeyboardSequence(pl platforms.Platform, args []string) error

PressKeyboardSequence presses each key in args sequentially with a delay between each press. Used by both ZapScript commands and API handlers.

func RunCommand

func RunCommand(
	pl platforms.Platform,
	cfg *config.Instance,
	plsc playlists.PlaylistController,
	token tokens.Token,
	cmd zapscript.Command,
	totalCmds int,
	currentIndex int,
	db *database.Database,
	lm *state.LauncherManager,
	exprEnv *zapscript.ArgExprEnv,
) (platforms.CmdResult, error)

RunCommand parses and runs a single ZapScript command. The lm parameter is only needed for media-launching commands (launch guard); pass nil for contexts where media launches are not allowed (e.g. control scripts).

func RunControlScript added in v2.10.0

func RunControlScript(
	pl platforms.Platform,
	cfg *config.Instance,
	db *database.Database,
	script string,
	exprEnv *gozapscript.ArgExprEnv,
) error

RunControlScript parses and executes a zapscript string in control context. All commands are validated before any are executed to prevent partial execution. The exprEnv is passed directly to each command instead of building from state.

Types

type ArgPlaylist

type ArgPlaylist struct {
	ID    string            `json:"id"`
	Name  string            `json:"name"`
	Items []ArgPlaylistItem `json:"items"`
}

type ArgPlaylistItem

type ArgPlaylistItem struct {
	Name      string `json:"name"`
	ZapScript string `json:"zapscript"`
}

type WellKnown

type WellKnown struct {
	Trusted   []string `json:"trusted,omitempty"`
	ZapScript int      `json:"zapscript"`
	Auth      int      `json:"auth,omitempty"`
}

func FetchWellKnown added in v2.10.0

func FetchWellKnown(baseURL string) (*WellKnown, error)

FetchWellKnown fetches and parses the .well-known/zaparoo file from a base URL. Returns ErrWellKnownNotFound if the host returned 404.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL