bankcode-bic
Version:
Convert bank codes from IBAN to BICs, Name of bank. Currently supports only some selected EU countries.
63 lines (62 loc) • 1.72 kB
JavaScript
//#region src/download/at.ts
const getCacheKey = (country) => {
return `bankcode-bic-${country}`;
};
const getDownloadUrl = async () => {
return {
websiteUrl: "https://www.oenb.at/Statistik/Klassifikationen/Bankstellenverzeichnis.html",
url: "https://www.oenb.at/docroot/downloads_observ/sepa-zv-vz_gesamt.csv",
dataFormat: "csv",
version: "",
notes: "Österreichische Nationalbank Bankstellenverzeichnis"
};
};
const downloadCSV = async (url, fetchFn = globalThis.fetch) => {
const res = await fetchFn(url);
const buffer = await res.arrayBuffer();
const decoder = new TextDecoder("iso-8859-1");
const cvs = decoder.decode(new Uint8Array(buffer));
const csvStart = cvs.indexOf("Kennzeichen;");
if (csvStart === -1) throw new Error("CSV header not found");
return cvs.slice(csvStart);
};
const parseCSV = (cvs) => {
const lines = cvs.split(/\r?\n/);
const header = lines[0].split(";");
const colMap = /* @__PURE__ */ new Map();
header.forEach((col, idx) => {
colMap.set(col.trim(), idx);
});
lines.shift();
const wantedCols = [
"Bankleitzahl",
"SWIFT-Code",
"Bankenname",
"Straße",
"PLZ",
"Ort",
"Telefon",
"Fax",
"E-Mail",
"Homepage"
];
const allowedSectors = new Set([
"Raiffeisen",
"Aktienbanken",
"§ 9 Institute",
"Sparkassen",
"Volksbanken"
]);
const result = [];
for (const line_ of lines) {
const line = line_.trim();
if (line === "") continue;
const cols = line.split(";");
if (!allowedSectors.has(cols[colMap.get("Sektor") ?? -1])) continue;
const row = wantedCols.map((col) => cols[colMap.get(col) ?? -1]?.trim());
result.push(row);
}
return result;
};
//#endregion
export { downloadCSV, getCacheKey, getDownloadUrl, parseCSV };