Path: blob/master/webhooks/webhook_reader.js
1072 views
/**1* # Install dependecies2*3* npm install4*5* # Run6* node webhook_reader.js7*/89const fs = require("node:fs");10const http = require("node:http");11const multer = require("multer");1213const uploadsDir = "./uploads";1415const storage = multer.diskStorage({16destination: (_req, _file, cb) => {17if (!fs.existsSync(uploadsDir)) {18fs.mkdirSync(uploadsDir);19}20cb(null, uploadsDir);21},22filename: (_req, file, cb) => {23cb(null, file.originalname);24},25});2627const filesParser = multer({ storage }).any();2829const server = http.createServer((req, res) => {30if (req.method === "POST") {31collectRequestData(req, res);32} else {33res.end(`Send a POST request instead.`);34}35});3637server.listen(8001, () => {38console.log("Server listening on port 8001");39});4041const CONTENT_TYPE_MULTIPART_FORM_DATA = "multipart/form-data";4243function collectRequestData(request, response) {44const contentType = request.headers["content-type"];45// console.log(`Content type: ${contentType}`);46if (!contentType) {47response.end("OK!");48} else if (contentType.indexOf(CONTENT_TYPE_MULTIPART_FORM_DATA) > -1) {49filesParser(request, response, (err) => {50if (err) {51// A Multer error occurred when uploading.52// An unknown error occurred when uploading.53console.error(err);54response.writeHead(500);55response.end("Error");56} else {57jsonData = request.body.json;58console.log(jsonData);59response.end("OK!");60}61});62} else {63let rawData = "";64request.on("data", (data) => {65rawData += data;66});67request.on("end", () => {68let decodedData = decodeURIComponent(rawData);69if (decodedData.includes("json=")) {70decodedData = decodedData.split("+").join(" ");71const jsonData = decodedData.split("json=")[1];72console.log(jsonData);73response.end("OK!");74}75});76}77}787980