Files
is-a-dev/util/raw-api.js
T
William Harrison da3906c928 Update raw-api.js
2025-04-23 19:36:25 +08:00

94 lines
2.3 KiB
JavaScript

const fs = require("fs");
const path = require("path");
const directoryPath = path.join(__dirname, "../domains");
const reserved = require(path.join(__dirname, "reserved.json"));
const outputDir = path.join(__dirname, "../raw-api");
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });
}
let v1 = [];
let v2 = [];
for (const subdomain of reserved) {
const commonData = {
owner: {
username: "is-a-dev"
},
domain: `${subdomain}.is-a.dev`,
subdomain: subdomain,
reserved: true
};
v1.push({
...commonData,
record: {
"URL": "https://is-a.dev/reserved"
}
});
v2.push({
...commonData,
records: {
"URL": "https://is-a.dev/reserved"
}
});
}
fs.readdir(directoryPath, function (err, files) {
if (err) throw err;
let processedCount = 0;
files.forEach(function (file) {
const filePath = path.join(directoryPath, file);
fs.readFile(filePath, "utf8", (err, data) => {
if (err) throw err;
const item = JSON.parse(data);
const name = path.parse(file).name;
item.domain = name + ".is-a.dev";
item.subdomain = name;
if (item.owner && item.owner.email) {
delete item.owner.email;
}
// Backwards compatible split
const itemV1 = {
...item,
record: item.records
};
delete itemV1.records;
const itemV2 = {
...item,
records: item.records
};
delete itemV2.record;
v1.push(itemV1);
v2.push(itemV2);
processedCount++;
if (processedCount === files.length) {
fs.writeFile("raw-api/index.json", JSON.stringify(v1, null, 2), (err) => {
if (err) throw err;
});
fs.writeFile("raw-api/v1.json", JSON.stringify(v1, null, 2), (err) => {
if (err) throw err;
});
fs.writeFile("raw-api/v2.json", JSON.stringify(v2, null, 2), (err) => {
if (err) throw err;
});
}
});
});
});