UNPKG

@vizertech/nextjs-capi

Version:

NextJS 13 Wrapper for fb pixel and capi for graph v17.0 API

64 lines (63 loc) 2.96 kB
"use strict"; 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;