lint/test/linters/javascript_prettier/javascript_good_1.js
Marco Ferrari e6cf8d3845
Move tests to the test directory (#4985)
* Move tests to the test directory

* Fix linting errors

* Add states back

* Add xml back
2023-12-15 08:50:35 +00:00

223 lines
5.2 KiB
JavaScript

var http = require("http");
var createHandler = require("github-webhook-handler");
var handler = createHandler({ path: "/webhook", secret: process.env.SECRET });
var userArray = ["user1"];
var teamDescription = "Team of Robots";
var teamPrivacy = "closed"; // closed (visible) / secret (hidden) are options here
var teamName = process.env.GHES_TEAM_NAME;
var teamAccess = "pull"; // pull,push,admin options here
var teamId = "";
var orgRepos = [];
// var creator = ""
http
.createServer(function (req, res) {
handler(req, res, function (err) {
console.log(err);
res.statusCode = 404;
res.end("no such location");
});
})
.listen(3000);
handler.on("error", function (err) {
console.error("Error:", err.message);
});
handler.on("repository", function (event) {
if (event.payload.action === "created") {
const repo = event.payload.repository.full_name;
console.log(repo);
const org = event.payload.repository.owner.login;
getTeamID(org);
setTimeout(checkTeamIDVariable, 1000);
}
});
handler.on("team", function (event) {
// TODO user events such as being removed from team or org
if (event.payload.action === "deleted") {
// const name = event.payload.team.name
const org = event.payload.organization.login;
getRepositories(org);
setTimeout(checkReposVariable, 5000);
} else if (event.payload.action === "removed_from_repository") {
const org = event.payload.organization.login;
getTeamID(org);
// const repo = event.payload.repository.full_name
setTimeout(checkTeamIDVariable, 1000);
}
});
function getTeamID(org) {
const https = require("https");
const options = {
hostname: process.env.GHE_HOST,
port: 443,
path: "/api/v3/orgs/" + org + "/teams",
method: "GET",
headers: {
Authorization: "token " + process.env.GHE_TOKEN,
"Content-Type": "application/json",
},
};
let body = [];
const req = https.request(options, (res) => {
res
.on("data", (chunk) => {
body.push(chunk);
})
.on("end", () => {
body = JSON.parse(Buffer.concat(body));
body.forEach((item) => {
if (item.name === teamName) {
teamId = item.id;
}
});
});
});
req.on("error", (error) => {
console.error(error);
});
req.end();
}
function checkTeamIDVariable(repo) {
if (typeof teamId !== "undefined") {
addTeamToRepo(repo, teamId);
}
}
function checkReposVariable(org) {
if (typeof orgRepos !== "undefined") {
// for(var repo of orgRepos) {
// addTeamToRepo(repo, teamId)
// }
reCreateTeam(org);
}
}
function addTeamToRepo(repo, teamId) {
const https = require("https");
const data = JSON.stringify({
permission: teamAccess,
});
const options = {
hostname: process.env.GHE_HOST,
port: 443,
path: "/api/v3/teams/" + teamId + "/repos/" + repo,
method: "PUT",
headers: {
Authorization: "token " + process.env.GHE_TOKEN,
"Content-Type": "application/json",
"Content-Length": data.length,
},
};
let body = [];
const req = https.request(options, (res) => {
res
.on("data", (chunk) => {
body.push(chunk);
})
.on("end", () => {
body = Buffer.concat(body).toString();
console.log(res.statusCode);
console.log("added team to " + repo);
});
});
req.on("error", (error) => {
console.error(error);
});
req.write(data);
req.end();
}
function reCreateTeam(org) {
const https = require("https");
const data = JSON.stringify({
name: teamName,
description: teamDescription,
privacy: teamPrivacy,
maintainers: userArray,
repo_names: orgRepos,
});
const options = {
hostname: process.env.GHE_HOST,
port: 443,
path: "/api/v3/orgs/" + org + "/teams",
method: "POST",
headers: {
Authorization: "token " + process.env.GHE_TOKEN,
"Content-Type": "application/json",
"Content-Length": data.length,
},
};
// const body = []
const req = https.request(options, (res) => {
if (res.statusCode !== 201) {
console.log("Status code: " + res.statusCode);
console.log("Added " + teamName + " to " + org + " Failed");
res.on("data", function (chunk) {
console.log("BODY: " + chunk);
});
} else {
console.log("Added " + teamName + " to " + org);
}
});
req.on("error", (error) => {
console.error(error);
});
req.write(data);
req.end();
}
function getRepositories(org) {
orgRepos = [];
const https = require("https");
const options = {
hostname: process.env.GHE_HOST,
port: 443,
path: "/api/v3/orgs/" + org + "/repos",
method: "GET",
headers: {
Authorization: "token " + process.env.GHE_TOKEN,
"Content-Type": "application/json",
},
};
let body = [];
const req = https.request(options, (res) => {
res
.on("data", (chunk) => {
body.push(chunk);
})
.on("end", () => {
body = JSON.parse(Buffer.concat(body));
body.forEach((item) => {
orgRepos.push(item.full_name);
console.log(item.full_name);
});
});
});
req.on("error", (error) => {
console.error(error);
});
req.end();
}