UNPKG

@inkdropapp/mcp-server

Version:

Inkdrop Model Context Protocol Server

48 lines (47 loc) 1.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildUrl = buildUrl; exports.fetchJSON = fetchJSON; exports.postJSON = postJSON; const config = { baseUrl: process.env.INKDROP_LOCAL_SERVER_URL, username: process.env.INKDROP_LOCAL_USERNAME, password: process.env.INKDROP_LOCAL_PASSWORD, }; function getAuthHeaders() { const token = Buffer.from(`${config.username}:${config.password}`).toString("base64"); return { Authorization: `Basic ${token}` }; } function buildUrl(path, qs = {}) { const url = new URL(path, config.baseUrl); for (const [k, v] of Object.entries(qs)) { if (v !== undefined && v !== null) url.searchParams.set(k, String(v)); } return url.toString(); } async function fetchJSON(path, qs = {}) { const url = buildUrl(path, qs); const resp = await fetch(url, { headers: getAuthHeaders() }); if (!resp.ok) { throw new Error(`Fetch error [${resp.status}] ${resp.statusText}`); } return await resp.json(); } async function postJSON(path, body) { const url = buildUrl(path); const resp = await fetch(url, { method: "POST", headers: { ...getAuthHeaders(), "Content-Type": "application/json" }, body: JSON.stringify(body) }); if (!resp.ok) { throw new Error(`Fetch error [${resp.status}] ${resp.statusText}`); } return await resp.json(); }