// Copyright 2014-2025 Jesper Larsson
//
// This file is part of Klipspringer, <https://klipspringer.avadeaux.net/>
//
// Klipspringer is free software: you can redistribute it and/or modify it under the terms of the
// GNU General Public License as published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// Klipspringer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
// even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with Klipspringer. If
// not, see <https://www.gnu.org/licenses/>.

const sendUrl = (url, init) => fetch(url, init).then(resp =>
    resp.text().then(text => {
        let ans;
        try { ans = JSON.parse(text) } catch { ans = resp.ok ? { ok: text } : { err: text } }
        if (resp.ok) {
            if (!ans.ok && !ans.err) { ans.ok = resp.statusText }
        } else {
            ans.err = ans.err || resp.statusText;
            ans.ok = false;
        }
        return ans;
    })).catch(err => ({ err: err }));

const lastSendCmdTime = { };

const sendCmd = (cmd, args, init) => {
    const now = Date.now();
    const last = lastSendCmdTime[cmd];
    const diffArg = last ? "&rept="+(now-last) : "";
    lastSendCmdTime[cmd] = now;
    return sendUrl("/player?cmd=" + cmd + diffArg + (args || ''), init);
}

Version: v4.3.2.2 (2026-05-16T17:03:34+02:00)
Raw file
Source code overview
Klipspringer home