src | ||
.env.example | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
flake.lock | ||
flake.nix | ||
README.md | ||
rust-toolchain.toml |
musikquadrupled
A proxy server for musikcubed that implements TLS, alternative authentication solution, CORS for proper Web support and a few extra goodies. Compatible with musikcube.
Configuration
The configuration is done via MUSIKQUAD_*
environment variables. Alternatively you can also provide a .env
file in the same directory as the binary or a parent directory, which will be readed and loaded as environment variables.
See .env.example
for a commented .env
file.
API (public)
All of the musikcubed
APIs are implemented. On top of those:
share/generate/:external_id
: Returns a "scoped token" for the specified ID of a music. This allows one to accessshare/*
APIs. This endpoint requires authentication.share/audio/:scoped_token
: Returns the music (or a range of it ifRANGE
header is present) corresponding to the specifiedscoped_token
. Returns404 Not Found
if the requested music isn't available.share/info/:scoped_token
: Returns information (title, album, artist etc.) of the music corresponding to the specifiedscoped_token
in JSON. Returns404 Not Found
if the requested music isn't available.share/thumbnail/:scoped_token
: Returns the thumbnail for the music corresponding to the specifiedscoped_token
. Returns404 Not Found
if the requested thumbnail isn't available.
If an endpoint requires authentication this means you have to provide a token via a token
query paramater in the URL. If not provided 401 Unauthorized
will be returned. For musikcube
, this is not necessary as the server will also handle Authentication
header for the APIs musikcube
uses.
API (internal)
These are only exposed to localhost
clients.
token/generate
: Generates a new token for use with thetoken
query paramater in the public APIs.token/revoke_all
: Revokes all tokens.