var EMAIL_HASH_TOKEN_ENDPOINT = 'https://api-prod.nvidia.com/services/ets/v1/generate/email/token?email=';
var NVWEB_S_VALUE_ENDPOINT;
if (window.location.hostname.endsWith('.cn')) {
NVWEB_S_VALUE_ENDPOINT = 'https://register.nvidia.cn/flow/getNvidiaStarFleetIdCookie';
}
else {
NVWEB_S_VALUE_ENDPOINT = 'https://register.nvidia.com/flow/getNvidiaStarFleetIdCookie';
}
function generateToken() {
//return state after it has any double quotations removed
var d = new Date().getTime();//Timestamp
var d2 = null;
//Time in microseconds since page-load or 0 if unsupported
if (performance) {
if (performance.now) {
d2= performance.now()*1000;
}
} else {
d2 = 0;
}
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16;//random number between 0 and 16
if(Math.max(d, 0) === d){//Use timestamp until depleted
r = (d + r)%16 | 0;
d = Math.floor(d/16);
} else {//Use microseconds since page-load if supported
r = (d2 + r)%16 | 0;
d2 = Math.floor(d2/16);
}
if (c === 'x') {
return r;
} else {
if (r) {
return (0x3 | 0x8).toString(16);
}
}
});
}
function getCookie(cname) {
function escape(s) { return s.replace(/([.*+?\^$(){}|\[\]\/\\])/g, '\\$1'); }
var match = document.cookie.match(RegExp('(?:^|;\\s*)' + escape(cname) + '=([^;]*)'));
return match ? match[1] : null;
}
function setCookie(cname, cvalue, exdays, domain) {
// console.log('Set cookie', cname);
if( getCookie(cname) === null ){
const d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
let expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";domain=" + domain +";path=/";
}
}
function fetchWithRetries ( url, retryCount = 0 ) {
const maxRetries = 6;
return fetch(url)
.then(function(res){
return response.json();})
.then(function(data){
return data;
})
.catch(function(error){
if (Math.min(retryCount, maxRetries - 1) === retryCount) {
console.log('Error - url:', url);
return fetchWithRetries(url, retryCount + 1);
}
// max retries exceeded
throw error;
});
}
var workflowPageCodes = ['contactinfo', 'continfos23', 'attendeeportal', 'yourexperience', 'createaccount', 'sessioncatalog']; // Registration and Attendee Portal codes
if(workflowPageCodes.includes(data.page)) {
var TOKEN = generateToken();
setCookie('nvweb_A', TOKEN, 3650,'.nvidia.com');
if( data.attendee.email ){
// console.log('Validations - page, email', data.page, data.attendee.email);
fetch(EMAIL_HASH_TOKEN_ENDPOINT + encodeURIComponent(data.attendee.email))
.then(function(response){ return response.json()})
.then(function(data){
if(data.error) {
console.log('EMAIL_HASH_TOKEN_ENDPOINT + data.attendee.email', EMAIL_HASH_TOKEN_ENDPOINT + data.attendee.email);
console.log('data.error', data.error);
return;
}
setCookie('nvweb_E', data.token, 3650,'.nvidia.com');
});
}
fetch(NVWEB_S_VALUE_ENDPOINT)
.then(function(response){ return response.json()})
.then(function(data){
console.log('data', data);
if(data.error) {
console.log('data.error', data.error);
return;
}
setCookie('nvweb_S', data.data.nvweb_S, 3650,'.nvidia.com');
});
}