@vizertech/nextjs-capi
Version:
NextJS 13 Wrapper for fb pixel and capi for graph v17.0 API
64 lines (63 loc) • 2.96 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const request_1 = require("../lib/request");
const server_events_1 = require("./server-events");
function handleEvent(req, res) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
if (req.method !== 'POST') {
return res.status(400).json({
message: 'Esta ruta debe ser post solamente'
});
}
if (!process.env.FB_ACCESS_TOKEN) {
throw new Error('No se encuentra el token de acceso de facebook Graph API');
}
if (!process.env.NEXT_PUBLIC_PIXEL_ID) {
throw new Error('No se encuentra el id del pixel de facebook');
}
if (!process.env.NEXT_PUBLIC_GRAPH_VERSION) {
throw new Error('No se ha definido una version de la API Graph de Facebook');
}
if (process.env.NEXT_PUBLIC_GRAPH_VERSION !== 'v16.0' && process.env.NEXT_PUBLIC_GRAPH_VERSION !== 'v17.0') {
throw new Error('La versión de graph api definida no existe o ya fue deprecada, utilice la version 16 o 17 para quitar este error');
}
let body = req.body;
if (!body.event_name) {
return res.status(400).json({
error: 'El nombre del evento es obligatorio'
});
}
if (body.user_data)
body.user_data.fbp = (0, request_1.getClientFbq)(req);
if (body.user_data)
body.user_data.fbc = (0, request_1.getClientFbc)(req);
if (body.user_data)
body.user_data.client_ip_address = (0, request_1.getClientIpAddress)(req);
if (body.user_data)
body.user_data.client_user_agent = (0, request_1.getClientUserAgent)(req);
const eventResponse = yield (0, server_events_1.sendEvent)(body);
const success = (_a = eventResponse.events_received === 1) !== null && _a !== void 0 ? _a : false;
if (process.env.NEXT_PUBLIC_DEBUG === 'true') {
return res.status(200).json({
debug: true,
success,
body,
eventResponse
});
}
return res.status(200).json({
success
});
});
}
exports.default = handleEvent;