near-protocol-rewards
Version:
A transparent, metric-based rewards system for NEAR projects
49 lines (48 loc) • 1.78 kB
JavaScript
;
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;