Files
webhook-action/index.js
T
2026-04-25 00:28:34 +02:00

61 lines
1.4 KiB
JavaScript

const crypto = require("crypto");
const https = require("https");
function createSignature(payload, secret) {
return crypto
.createHmac("sha256", secret)
.update(payload)
.digest("hex");
}
async function sendRequest(url, payload, signature) {
const parsedUrl = new URL(url);
const options = {
hostname: parsedUrl.hostname,
path: parsedUrl.pathname + parsedUrl.search,
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.byteLength(payload),
"X-Signature": signature
}
};
return new Promise((resolve, reject) => {
const req = https.request(options, (res) => {
let data = "";
res.on("data", (chunk) => (data += chunk));
res.on("end", () => {
console.log("Status:", res.statusCode);
console.log("Response:", data);
resolve();
});
});
req.on("error", reject);
req.write(payload);
req.end();
});
}
async function run() {
try {
const url = process.env.INPUT_URL;
const secret = process.env.INPUT_SECRET;
const payload = process.env.INPUT_PAYLOAD
const signature = createSignature(payload, secret);
console.log("Sending webhook...");
await sendRequest(url, payload, signature);
console.log("Done.");
} catch (err) {
console.error("Action failed:", err);
process.exit(1);
}
}
run();