* chore: .gitignore any navidrome binary Signed-off-by: Deluan <[email protected]> * feat: implement internal authentication handling in middleware Signed-off-by: Deluan <[email protected]> * feat(manager): add SubsonicRouter to Manager for API routing Signed-off-by: Deluan <[email protected]> * feat(plugins): add SubsonicAPI Host service for plugins and an example plugin Signed-off-by: Deluan <[email protected]> * fix lint Signed-off-by: Deluan <[email protected]> * feat(plugins): refactor path handling in SubsonicAPI to extract endpoint correctly Signed-off-by: Deluan <[email protected]> * docs(plugins): add SubsonicAPI service documentation to README Signed-off-by: Deluan <[email protected]> * feat(plugins): implement permission checks for SubsonicAPI service Signed-off-by: Deluan <[email protected]> * feat(plugins): enhance SubsonicAPI service initialization with atomic router handling Signed-off-by: Deluan <[email protected]> * refactor(plugins): better encapsulated dependency injection Signed-off-by: Deluan <[email protected]> * refactor(plugins): rename parameter in WithInternalAuth for clarity Signed-off-by: Deluan <[email protected]> * docs(plugins): update SubsonicAPI permissions section in README for clarity and detail Signed-off-by: Deluan <[email protected]> * feat(plugins): enhance SubsonicAPI permissions output with allowed usernames and admin flag Signed-off-by: Deluan <[email protected]> * feat(plugins): add schema reference to example plugins Signed-off-by: Deluan <[email protected]> * remove import alias Signed-off-by: Deluan <[email protected]> --------- Signed-off-by: Deluan <[email protected]>
Plugin Examples
This directory contains example plugins for Navidrome, intended for demonstration and reference purposes. These plugins are not used in automated tests.
Contents
wikimedia/: Example plugin that retrieves artist information from Wikidata.coverartarchive/: Example plugin that retrieves album cover images from the Cover Art Archive.crypto-ticker/: Example plugin using websockets to log real-time cryptocurrency prices.discord-rich-presence/: Example plugin that integrates with Discord Rich Presence to display currently playing tracks on Discord profiles.subsonicapi-demo/: Example plugin that demonstrates how to interact with the Navidrome's Subsonic API from a plugin.
Building
To build all example plugins, run:
make
Or to build a specific plugin:
make wikimedia
make coverartarchive
make crypto-ticker
make discord-rich-presence
make subsonicapi-demo
This will produce the corresponding plugin.wasm files in each plugin's directory.