@dpkit/ckan
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
35 lines • 4.79 kB
JavaScript
export async function makeCkanApiRequest(options) {
let body;
const headers = {};
const url = new URL(options.ckanUrl);
url.pathname = `/api/3/action/${options.action}`;
if (options.apiKey) {
headers.Authorization = options.apiKey;
}
if (options.upload) {
body = new FormData();
body.append("upload", options.upload.data, options.upload.name);
for (const [key, value] of Object.entries(options.payload)) {
body.append(key, value);
}
}
else {
body = JSON.stringify(options.payload);
headers["Content-Type"] = "application/json";
}
const response = await fetch(url.toString(), {
method: "POST",
headers,
body,
});
if (!response.ok) {
const errorText = await response.text();
throw new Error(`CKAN API error: ${response.status} ${response.statusText}\n${errorText}`);
}
const data = (await response.json());
if (!data.success) {
throw new Error(`CKAN API error: ${data.error}`);
}
return data.result;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2dlbmVyYWwvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUFpQixPQU14RDtJQUNDLElBQUksSUFBdUIsQ0FBQTtJQUMzQixNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFBO0lBRXZDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwQyxHQUFHLENBQUMsUUFBUSxHQUFHLGlCQUFpQixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUE7SUFFaEQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsT0FBTyxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFBO0lBQ3hDLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQixJQUFJLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQTtRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRS9ELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN0QyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsa0JBQWtCLENBQUE7SUFDOUMsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUMzQyxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU87UUFDUCxJQUFJO0tBQ0wsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLFNBQVMsR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUNiLG1CQUFtQixRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQzFFLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBZSxDQUFBO0lBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDLE1BQVcsQ0FBQTtBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEZXNjcmlwdG9yIH0gZnJvbSBcIkBkcGtpdC9jb3JlXCJcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1ha2VDa2FuQXBpUmVxdWVzdDxUID0gRGVzY3JpcHRvcj4ob3B0aW9uczoge1xuICBja2FuVXJsOiBzdHJpbmdcbiAgYWN0aW9uOiBzdHJpbmdcbiAgcGF5bG9hZDogRGVzY3JpcHRvclxuICB1cGxvYWQ/OiB7IG5hbWU6IHN0cmluZzsgZGF0YTogQmxvYiB9XG4gIGFwaUtleT86IHN0cmluZ1xufSkge1xuICBsZXQgYm9keTogc3RyaW5nIHwgRm9ybURhdGFcbiAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG5cbiAgY29uc3QgdXJsID0gbmV3IFVSTChvcHRpb25zLmNrYW5VcmwpXG4gIHVybC5wYXRobmFtZSA9IGAvYXBpLzMvYWN0aW9uLyR7b3B0aW9ucy5hY3Rpb259YFxuXG4gIGlmIChvcHRpb25zLmFwaUtleSkge1xuICAgIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IG9wdGlvbnMuYXBpS2V5XG4gIH1cblxuICBpZiAob3B0aW9ucy51cGxvYWQpIHtcbiAgICBib2R5ID0gbmV3IEZvcm1EYXRhKClcbiAgICBib2R5LmFwcGVuZChcInVwbG9hZFwiLCBvcHRpb25zLnVwbG9hZC5kYXRhLCBvcHRpb25zLnVwbG9hZC5uYW1lKVxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucy5wYXlsb2FkKSkge1xuICAgICAgYm9keS5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMucGF5bG9hZClcbiAgICBoZWFkZXJzW1wiQ29udGVudC1UeXBlXCJdID0gXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgfVxuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLnRvU3RyaW5nKCksIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGhlYWRlcnMsXG4gICAgYm9keSxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgY29uc3QgZXJyb3JUZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENLQU4gQVBJIGVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fVxcbiR7ZXJyb3JUZXh0fWAsXG4gICAgKVxuICB9XG5cbiAgY29uc3QgZGF0YSA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIERlc2NyaXB0b3JcbiAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENLQU4gQVBJIGVycm9yOiAke2RhdGEuZXJyb3J9YClcbiAgfVxuXG4gIHJldHVybiBkYXRhLnJlc3VsdCBhcyBUXG59XG4iXX0=