UNPKG

near-protocol-rewards

Version:

A transparent, metric-based rewards system for NEAR projects

49 lines (48 loc) 1.78 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.sendEventToAWS = void 0; const axios_1 = __importDefault(require("axios")); const auth_1 = require("./auth"); function convertFloatsToDecimalStrings(obj) { if (obj === null || obj === undefined) { return obj; } if (typeof obj === 'number' && !Number.isInteger(obj)) { return obj.toFixed(6); } if (typeof obj === 'object') { if (Array.isArray(obj)) { return obj.map(item => convertFloatsToDecimalStrings(item)); } const result = {}; for (const key in obj) { result[key] = convertFloatsToDecimalStrings(obj[key]); } return result; } return obj; } async function sendEventToAWS(payload) { const apiUrl = 'https://near-protocol-rewards-tracking.com/event'; try { const processedPayload = convertFloatsToDecimalStrings(payload); const jwtToken = await (0, auth_1.getGitHubOIDCToken)('near-protocol-rewards-tracking'); const response = await axios_1.default.post(apiUrl, processedPayload, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${jwtToken}` } }); return response.data; } catch (error) { if (axios_1.default.isAxiosError(error)) { throw new Error(`Request error: ${error.response?.status} - ${error.response?.data}`); } throw new Error(`Error sending event: ${error instanceof Error ? error.message : String(error)}`); } } exports.sendEventToAWS = sendEventToAWS;