UNPKG

@dpkit/zenodo

Version:

Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames

36 lines 5.05 kB
export async function makeZenodoApiRequest(options) { const { endpoint, method = "GET", payload, upload, apiKey, sandbox = false, } = options; let body; const headers = {}; const baseUrl = sandbox ? "https://sandbox.zenodo.org/api" : "https://zenodo.org/api"; const url = new URL(`${baseUrl}${endpoint}`); if (apiKey) { url.searchParams.append("access_token", apiKey); } if (upload) { body = new FormData(); body.append("file", upload.data, upload.name); if (payload) { for (const [key, value] of Object.entries(payload)) { body.append(key, JSON.stringify(value)); } } } else if (payload) { body = JSON.stringify(payload); headers["Content-Type"] = "application/json"; } const response = await fetch(url.toString(), { method, headers, body, }); if (!response.ok) { const errorText = await response.text(); throw new Error(`Zenodo API error: ${response.status} ${response.statusText}\n${errorText}`); } return (await response.json()); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3plbm9kby9yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQWlCLE9BTzFEO0lBQ0MsTUFBTSxFQUNKLFFBQVEsRUFDUixNQUFNLEdBQUcsS0FBSyxFQUNkLE9BQU8sRUFDUCxNQUFNLEVBQ04sTUFBTSxFQUNOLE9BQU8sR0FBRyxLQUFLLEdBQ2hCLEdBQUcsT0FBTyxDQUFBO0lBRVgsSUFBSSxJQUFtQyxDQUFBO0lBQ3ZDLE1BQU0sT0FBTyxHQUF3QixFQUFFLENBQUE7SUFFdkMsTUFBTSxPQUFPLEdBQUcsT0FBTztRQUNyQixDQUFDLENBQUMsZ0NBQWdDO1FBQ2xDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQTtJQUM1QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLE9BQU8sR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBRTVDLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQTtRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUU3QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQ3pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztTQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDbkIsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLGtCQUFrQixDQUFBO0lBQzlDLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDM0MsTUFBTTtRQUNOLE9BQU87UUFDUCxJQUFJO0tBQ0wsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLFNBQVMsR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUNiLHFCQUFxQixRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQzVFLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFNLENBQUE7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGVzY3JpcHRvciB9IGZyb20gXCJAZHBraXQvY29yZVwiXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYWtlWmVub2RvQXBpUmVxdWVzdDxUID0gRGVzY3JpcHRvcj4ob3B0aW9uczoge1xuICBlbmRwb2ludDogc3RyaW5nXG4gIG1ldGhvZD86IFwiR0VUXCIgfCBcIlBPU1RcIiB8IFwiUFVUXCIgfCBcIkRFTEVURVwiXG4gIHBheWxvYWQ/OiBEZXNjcmlwdG9yXG4gIHVwbG9hZD86IHsgbmFtZTogc3RyaW5nOyBkYXRhOiBCbG9iIH1cbiAgYXBpS2V5Pzogc3RyaW5nXG4gIHNhbmRib3g/OiBib29sZWFuXG59KSB7XG4gIGNvbnN0IHtcbiAgICBlbmRwb2ludCxcbiAgICBtZXRob2QgPSBcIkdFVFwiLFxuICAgIHBheWxvYWQsXG4gICAgdXBsb2FkLFxuICAgIGFwaUtleSxcbiAgICBzYW5kYm94ID0gZmFsc2UsXG4gIH0gPSBvcHRpb25zXG5cbiAgbGV0IGJvZHk6IHN0cmluZyB8IEZvcm1EYXRhIHwgdW5kZWZpbmVkXG4gIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxuXG4gIGNvbnN0IGJhc2VVcmwgPSBzYW5kYm94XG4gICAgPyBcImh0dHBzOi8vc2FuZGJveC56ZW5vZG8ub3JnL2FwaVwiXG4gICAgOiBcImh0dHBzOi8vemVub2RvLm9yZy9hcGlcIlxuICBjb25zdCB1cmwgPSBuZXcgVVJMKGAke2Jhc2VVcmx9JHtlbmRwb2ludH1gKVxuXG4gIGlmIChhcGlLZXkpIHtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcImFjY2Vzc190b2tlblwiLCBhcGlLZXkpXG4gIH1cblxuICBpZiAodXBsb2FkKSB7XG4gICAgYm9keSA9IG5ldyBGb3JtRGF0YSgpXG4gICAgYm9keS5hcHBlbmQoXCJmaWxlXCIsIHVwbG9hZC5kYXRhLCB1cGxvYWQubmFtZSlcblxuICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXlsb2FkKSkge1xuICAgICAgICBib2R5LmFwcGVuZChrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAocGF5bG9hZCkge1xuICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkKVxuICAgIGhlYWRlcnNbXCJDb250ZW50LVR5cGVcIl0gPSBcImFwcGxpY2F0aW9uL2pzb25cIlxuICB9XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwudG9TdHJpbmcoKSwge1xuICAgIG1ldGhvZCxcbiAgICBoZWFkZXJzLFxuICAgIGJvZHksXG4gIH0pXG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIGNvbnN0IGVycm9yVGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBaZW5vZG8gQVBJIGVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fVxcbiR7ZXJyb3JUZXh0fWAsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIFRcbn1cbiJdfQ==