apim-developer-portal1
Version:
API management developer portal
102 lines (81 loc) • 2.54 kB
JavaScript
/*
* Important: this script is no longer maintained; new scripts are located in the scripts.v2 folder.
*/
const fs = require("fs");
const https = require("https");
const managementEndpoint = process.argv[2];
const accessToken = process.argv[3];
const dataFile = process.argv[4];
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
var options = {
port: 443,
method: "GET",
headers: {
"Authorization": accessToken
}
};
async function request(url) {
return new Promise((resolve, reject) => {
const req = https.request(url, options, (resp) => {
let data = "";
resp.on("data", (chunk) => {
data += chunk;
});
resp.on("end", () => {
try {
resolve(JSON.parse(data));
}
catch (e) {
reject(e);
console.log(url);
}
});
});
req.on("error", (e) => {
reject(e);
});
req.end();
});
}
async function getContentTypes() {
const data = await request(`https://${managementEndpoint}/contentTypes?api-version=2018-06-01-preview`);
const contentTypes = data.value.map(x => x.id.replace("\/contentTypes\/", ""));
return contentTypes;
}
async function getContentItems(contentType) {
const data = await request(`https://${managementEndpoint}/contentTypes/${contentType}/contentItems?api-version=2018-06-01-preview`);
const contentItems = data.value;
return contentItems;
}
function checkPath() {
const folderSegments = dataFile.split("/");
let checkedPath = dataFile;
if (!folderSegments[0]) {
folderSegments.splice(0,1);
checkedPath = checkedPath.slice(1);
}
if (folderSegments.length > 1) {
folderSegments.splice(-1,1);
const folder = folderSegments.join("/");
if (!fs.existsSync(folder)) {
fs.mkdirSync(folder);
}
}
return checkedPath;
}
async function capture() {
const result = {};
const contentTypes = await getContentTypes();
for (const contentType of contentTypes) {
const contentItems = await getContentItems(contentType);
contentItems.forEach(contentItem => {
result[contentItem.id] = contentItem;
delete contentItem.id;
});
}
const checkedPath = checkPath();
fs.writeFileSync(checkedPath, JSON.stringify(result));
}
capture().then(() => {
console.log("DONE");
})