Something went wrong. Try again.
a simple but full-featured web player for OpenSubsonic music servers (Navidrome, Gonic, Ampache, etc) devins.page/tinysub
svelte typescript javascript subsonic gonic navidrome
Something went wrong. Try again.
TypeScript
123456789101112131415161718192021222324252627282930313233343536import type { Credentials } from "./credentials.js";
export const buildApiParams = ( credentials: Credentials, params: Record<string, unknown> = {},) => { const authMode = credentials.authMode || (credentials.apiKey ? "apikey" : credentials.password ? "password" : "token"); const search = new URLSearchParams({ v: "1.16.1", c: "tinysub", f: "json" });
if (authMode === "apikey") { search.set("apiKey", credentials.apiKey || ""); } else { search.set("u", credentials.username || ""); if (authMode === "password") search.set("p", credentials.password || ""); else { search.set("t", credentials.token || ""); search.set("s", credentials.salt || ""); } }
for (const [key, value] of Object.entries(params)) { if (Array.isArray(value)) { for (const item of value) search.append(key, String(item)); } else if (value !== undefined) { search.append(key, String(value)); } } return search;};