//#region parameters const env = Object.freeze({ xsrfToken: document.getElementsByName('__RequestVerificationToken')[0].value, envKey: document.querySelector('meta[name="env-key"]').getAttribute('content') }) const url = Object.freeze({ reject: `/api/annotation/reject`, rejectRedir: `/envelope/${env.envKey}`, share: `/api/readonly` }); //#endregion //#region request helper methods function sendRequest(method, url, body = undefined) { const options = { credentials: 'include', method: method, headers: { 'X-XSRF-TOKEN': env.xsrfToken } } if (body !== undefined) { options.body = JSON.stringify(body); options.headers['Content-Type'] = 'application/json'; } return fetch(url, options); } function getRequest(url) { return sendRequest('GET', url); } function postRequest(url, body = undefined) { return sendRequest('POST', url, body); } function redirect(url) { window.location.href = url; } //#endregion //#region envelope function signEnvelope(annotations) { return postRequest(`/api/annotation`, annotations) } function rejectEnvelope(reason) { return postRequest(url.reject, reason); } function shareEnvelope(receiverMail, dateValid) { return postRequest(url.share, { receiverMail: receiverMail, dateValid: dateValid }); } //#endregion function redirRejected() { redirect(url.rejectRedir); } async function setLanguage(language) { const hasLang = await getRequest('/api/localization/lang') .then(res => res.json()) .then(langs => langs.includes(language)); if (hasLang) postRequest(`/api/localization/lang/${language}`) .then(response => { if (response.redirected) redirect(response.url); }); } function logout() { return postRequest(`/auth/logout`) .then(res => { if (res.ok) window.location.href = "/"; }); }