@inkdropapp/mcp-server
Version:
Inkdrop Model Context Protocol Server
48 lines (47 loc) • 1.47 kB
JavaScript
;
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();
}