This commit is contained in:
40
dist/controllers/webhook.controller.js
vendored
Normal file
40
dist/controllers/webhook.controller.js
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.handleTinyOrderUpdate = void 0;
|
||||
const n8n_service_1 = require("../services/n8n.service");
|
||||
const handleTinyOrderUpdate = async (req, res) => {
|
||||
try {
|
||||
let payload = req.body;
|
||||
// Parse 'dados' if it comes as a JSON string
|
||||
if (typeof payload.dados === 'string') {
|
||||
try {
|
||||
payload.dados = JSON.parse(payload.dados);
|
||||
}
|
||||
catch (e) {
|
||||
console.error('Could not parse "dados" as JSON string.', e);
|
||||
}
|
||||
}
|
||||
console.log('Received webhook from Tiny:', JSON.stringify(payload, null, 2));
|
||||
// Acknowledge Tiny immediately
|
||||
res.status(200).send('OK');
|
||||
if (!payload || Object.keys(payload).length === 0) {
|
||||
console.warn('Received empty payload from Tiny webhook.');
|
||||
return;
|
||||
}
|
||||
const transformedData = {
|
||||
source: 'tiny_webhook_middleware',
|
||||
event: payload.tipo || 'atualizacao_pedido',
|
||||
dados: payload.dados,
|
||||
raw_payload: payload
|
||||
};
|
||||
// Forward to n8n asynchronously
|
||||
await (0, n8n_service_1.sendToN8n)(transformedData);
|
||||
}
|
||||
catch (error) {
|
||||
console.error('Error handling Tiny webhook:', error);
|
||||
if (!res.headersSent) {
|
||||
res.status(500).json({ error: 'Internal server error processing webhook.' });
|
||||
}
|
||||
}
|
||||
};
|
||||
exports.handleTinyOrderUpdate = handleTinyOrderUpdate;
|
||||
20
dist/index.js
vendored
Normal file
20
dist/index.js
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const express_1 = __importDefault(require("express"));
|
||||
const dotenv_1 = __importDefault(require("dotenv"));
|
||||
const webhook_route_1 = __importDefault(require("./routes/webhook.route"));
|
||||
dotenv_1.default.config();
|
||||
const app = (0, express_1.default)();
|
||||
const port = process.env.PORT || 3000;
|
||||
app.use(express_1.default.json());
|
||||
app.use(express_1.default.urlencoded({ extended: true }));
|
||||
app.use('/api/webhooks', webhook_route_1.default);
|
||||
app.get('/health', (req, res) => {
|
||||
res.status(200).json({ status: 'OK', message: 'Tiny-n8n middleware is running.' });
|
||||
});
|
||||
app.listen(port, () => {
|
||||
console.log(`[server]: Middleware server is running at http://localhost:${port}`);
|
||||
});
|
||||
7
dist/routes/webhook.route.js
vendored
Normal file
7
dist/routes/webhook.route.js
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const express_1 = require("express");
|
||||
const webhook_controller_1 = require("../controllers/webhook.controller");
|
||||
const router = (0, express_1.Router)();
|
||||
router.post('/tiny/order-status', webhook_controller_1.handleTinyOrderUpdate);
|
||||
exports.default = router;
|
||||
30
dist/services/n8n.service.js
vendored
Normal file
30
dist/services/n8n.service.js
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.sendToN8n = void 0;
|
||||
const axios_1 = __importDefault(require("axios"));
|
||||
const sendToN8n = async (data) => {
|
||||
const n8nWebhookUrl = process.env.N8N_WEBHOOK_URL;
|
||||
if (!n8nWebhookUrl) {
|
||||
console.error('N8N_WEBHOOK_URL is not defined in environment variables.');
|
||||
return;
|
||||
}
|
||||
try {
|
||||
console.log(`Forwarding payload to n8n at ${n8nWebhookUrl}...`);
|
||||
const response = await axios_1.default.post(n8nWebhookUrl, data, {
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
console.log(`Successfully forwarded to n8n. Status: ${response.status}`);
|
||||
}
|
||||
catch (error) {
|
||||
console.error('Failed to forward payload to n8n.', error.message);
|
||||
if (error.response) {
|
||||
console.error('n8n Response:', error.response.status, error.response.data);
|
||||
}
|
||||
}
|
||||
};
|
||||
exports.sendToN8n = sendToN8n;
|
||||
Reference in New Issue
Block a user