Release v2.10.6
This commit is contained in:
@@ -4,6 +4,12 @@ const { createRequestAuthHeaders } = require('#src/request-auth');
|
||||
const { fetchPlayerRegistrations } = require('#src/data/player-registry');
|
||||
const { renderView } = require('../view');
|
||||
|
||||
function wait(milliseconds) {
|
||||
return new Promise(function (resolve) {
|
||||
setTimeout(resolve, milliseconds);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = function registerOnboardingRoutes(app, deps) {
|
||||
const pool = deps.pool;
|
||||
const playerInternalBaseUrl = String(deps.playerInternalBaseUrl || '').replace(/\/$/, '');
|
||||
@@ -42,11 +48,19 @@ module.exports = function registerOnboardingRoutes(app, deps) {
|
||||
{
|
||||
const resolvePath = '/api/onboarding/resolve?pairingCode=' + encodeURIComponent(pairingCode);
|
||||
const resolveAuthHeaders = createRequestAuthHeaders({ method: 'GET', pathname: '/api/onboarding/resolve' });
|
||||
const resolveResponse = await fetch(`${targetBaseUrl}${resolvePath}`, {
|
||||
method: 'GET',
|
||||
headers: Object.assign({ Accept: 'application/json' }, resolveAuthHeaders)
|
||||
});
|
||||
const resolveBody = await resolveResponse.text();
|
||||
let resolveResponse = null;
|
||||
let resolveBody = '';
|
||||
for (let attempt = 0; attempt < 5; attempt += 1) {
|
||||
resolveResponse = await fetch(`${targetBaseUrl}${resolvePath}`, {
|
||||
method: 'GET',
|
||||
headers: Object.assign({ Accept: 'application/json' }, resolveAuthHeaders)
|
||||
});
|
||||
resolveBody = await resolveResponse.text();
|
||||
if (resolveResponse.status !== 401 || resolveBody.indexOf('valid kiosk pairing code') === -1 || attempt === 4) {
|
||||
break;
|
||||
}
|
||||
await wait(200 * (attempt + 1));
|
||||
}
|
||||
let resolved = null;
|
||||
try { resolved = JSON.parse(resolveBody); } catch (_error) {}
|
||||
if (!resolveResponse.ok || !resolved || !resolved.deviceId) {
|
||||
@@ -61,11 +75,19 @@ module.exports = function registerOnboardingRoutes(app, deps) {
|
||||
for (const remoteRegistration of remoteRegistrations) {
|
||||
targetBaseUrl = String(remoteRegistration.internal_base_url).replace(/\/$/, '');
|
||||
const bridgeResolveHeaders = createRequestAuthHeaders({ method: 'GET', pathname: '/api/onboarding/resolve' });
|
||||
const bridgeResolveResponse = await fetch(`${targetBaseUrl}/api/onboarding/resolve?pairingCode=${encodeURIComponent(pairingCode)}`, {
|
||||
method: 'GET',
|
||||
headers: Object.assign({ Accept: 'application/json' }, bridgeResolveHeaders)
|
||||
});
|
||||
const bridgeResolveBody = await bridgeResolveResponse.text();
|
||||
let bridgeResolveResponse = null;
|
||||
let bridgeResolveBody = '';
|
||||
for (let attempt = 0; attempt < 5; attempt += 1) {
|
||||
bridgeResolveResponse = await fetch(`${targetBaseUrl}/api/onboarding/resolve?pairingCode=${encodeURIComponent(pairingCode)}`, {
|
||||
method: 'GET',
|
||||
headers: Object.assign({ Accept: 'application/json' }, bridgeResolveHeaders)
|
||||
});
|
||||
bridgeResolveBody = await bridgeResolveResponse.text();
|
||||
if (bridgeResolveResponse.status !== 401 || bridgeResolveBody.indexOf('valid kiosk pairing code') === -1 || attempt === 4) {
|
||||
break;
|
||||
}
|
||||
await wait(200 * (attempt + 1));
|
||||
}
|
||||
try { resolved = JSON.parse(bridgeResolveBody); } catch (_error) { resolved = null; }
|
||||
if (bridgeResolveResponse.ok && resolved && resolved.deviceId) {
|
||||
break;
|
||||
@@ -86,12 +108,20 @@ module.exports = function registerOnboardingRoutes(app, deps) {
|
||||
}
|
||||
const payload = { clientId: resolvedClientId, pairingCode: pairingCode, clientName: clientName, screenSlug: screenSlug };
|
||||
const authHeaders = createRequestAuthHeaders({ method: 'POST', pathname: '/api/onboarding', body: payload });
|
||||
const response = await fetch(`${targetBaseUrl}/api/onboarding`, {
|
||||
method: 'POST',
|
||||
headers: Object.assign({ 'Content-Type': 'application/json', Accept: 'application/json' }, authHeaders),
|
||||
body: JSON.stringify(payload)
|
||||
});
|
||||
const responseBody = await response.text();
|
||||
let response = null;
|
||||
let responseBody = '';
|
||||
for (let attempt = 0; attempt < 5; attempt += 1) {
|
||||
response = await fetch(`${targetBaseUrl}/api/onboarding`, {
|
||||
method: 'POST',
|
||||
headers: Object.assign({ 'Content-Type': 'application/json', Accept: 'application/json' }, authHeaders),
|
||||
body: JSON.stringify(payload)
|
||||
});
|
||||
responseBody = await response.text();
|
||||
if (response.status !== 401 || responseBody.indexOf('valid kiosk pairing code') === -1 || attempt === 4) {
|
||||
break;
|
||||
}
|
||||
await wait(200 * (attempt + 1));
|
||||
}
|
||||
res.status(response.status).type(response.headers.get('content-type') || 'application/json').send(responseBody);
|
||||
} catch (error) {
|
||||
res.status(502).json({ error: error && error.message ? error.message : 'Player unavailable.' });
|
||||
|
||||
Reference in New Issue
Block a user