mapnests-browser-sdk
Version:
TypeScript SDK for Mapnests API integration (Distance Matrix, Distance Matrix Details, Geocode, Reverse Geocode)
24 lines (23 loc) • 927 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateToken = generateToken;
const fetch_remote_time_1 = require("./fetch_remote_time");
async function generateToken(apiKey) {
const randInt = Math.floor(Math.random() * 1000000);
const utc_time = await (0, fetch_remote_time_1.fetchRemoteTime)();
const expires = utc_time + 30;
const input = `${expires}:${randInt}:${apiKey}`;
const encoder = new TextEncoder();
const data = encoder.encode(input);
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hash = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
const jsonPayload = {
random: randInt,
expires: expires,
sign: hash,
};
const jsonStr = JSON.stringify(jsonPayload);
const base64 = btoa(jsonStr);
return base64;
}