export async function retrieveContent()

in lambda/dynamic-fronts-fetcher/src/url-handling.ts [34:69]


export async function retrieveContent(file: File): Promise<IncomingDataRow[]> {
	const content = await consumeReadable(file.createReadStream());
	console.log(`debug: ${file.name} contents:`);
	const objects = content.toString('utf-8').split('\n');
	for (const line of objects) {
		console.log(`  ${line}`);
	}

	return objects
		.map((str, ctr) => {
			try {
				if (IsEmpty.test(str)) return undefined;
				return JSON.parse(str) as unknown;
			} catch (err) {
				console.warn(
					`Unparseable content at line ${ctr} of ${file.bucket.name}:${file.name} - '${str}'`,
				);
				return undefined;
			}
		})
		.map((obj, ctr) => {
			if (!obj) return undefined;
			const result = IncomingDataRow.safeParse(obj);
			if (result.success) {
				return result.data;
			} else {
				console.warn(
					`Data from line ${ctr} did not marshal: ${result.error.toString()}. Content was '${JSON.stringify(
						obj,
					)}'.`,
				);
				return undefined;
			}
		})
		.filter((obj) => !!obj) as IncomingDataRow[];
}