/** * Fetches CSRF Token from page */ function getCsrfToken() { return { 'X-XSRF-TOKEN': document.getElementsByName('__RequestVerificationToken')[0].value } } /** * Save signature data to server * @param {any} envelopeKey * @param {any} annotations */ function postEnvelope(annotations) { const token = getCsrfToken() const options = { credentials: 'include', method: 'POST', headers: { ...token, 'Content-Type': 'application/json; charset=utf-8' }, body: JSON.stringify(annotations) } return fetch(`/api/annotation`, options) } async function setLanguage(language) { const hasLang = await fetch('/api/localization/lang', { method: 'GET', headers: { 'Content-Type': 'application/json' } }) .then(res => res.json()) .then(langs => langs.includes(language)) .catch(err => false); if (hasLang) return await fetch(`/api/localization/lang/${language}`, { method: 'POST', headers: { 'Content-Type': 'application/json' } }) .then(response => { if (response.redirected) window.location.href = response.url; else if (!response.ok) return Promise.reject('Failed to set language'); }); } async function logout() { return await fetch(`/auth/logout`, { method: 'POST', headers: { 'Content-Type': 'application/json' } }).then(res => { if (res.ok) window.location.href = "/"; }); } async function getAnnotationParams(leftInInch = 0, topInInch = 0, inchToPointFactor = 72) { const annotParams = await fetch(`${window.location.origin}/api/Config/Annotations`, { credentials: 'include', method: 'GET' }) .then(res => res.json()); for (var key in annotParams) { var annot = annotParams[key]; annot.width *= inchToPointFactor; annot.height *= inchToPointFactor; annot.left += leftInInch - 0.7; annot.left *= inchToPointFactor; annot.top += topInInch - 0.5; annot.top *= inchToPointFactor; } return annotParams; }