@dpkit/zenodo
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
28 lines (23 loc) • 813 B
text/typescript
import { getFormat, getName } from "@dpkit/core"
import type { ZenodoResource } from "../Resource.ts"
/**
* Normalizes a Zenodo file to Frictionless Data resource format
* @param props Object containing the Zenodo file to normalize
* @returns Normalized Resource object
*/
export function normalizeZenodoResource(zenodoResource: ZenodoResource) {
const path = normalizeZenodoPath(zenodoResource.links.self)
const resource = {
path,
name: getName(zenodoResource.key) ?? zenodoResource.id,
format: getFormat(zenodoResource.key),
bytes: zenodoResource.size,
hash: zenodoResource.checksum,
"zenodo:key": zenodoResource.key,
"zenodo:url": path,
}
return resource
}
function normalizeZenodoPath(link: string) {
return link.replace("/api/", "/").replace(/\/content$/, "")
}