function show_error(msg) { var err_toast_text = document.getElementById("runtime-error-text"); err_toast_text.innerText = msg; err_toast.show(); } function validate_btn_reset() { var btn = document.getElementById("btn-validate"); btn.disabled = false; btn.innerHTML = 'Validate'; } function validate_btn_load() { var btn = document.getElementById("btn-validate"); btn.disabled = true; btn.innerHTML = ' Validating...'; } function clear_validation_results() { document.getElementById("validation-results").classList.add("d-none"); } async function validate() { clear_validation_results(); const output_div = document.getElementById("output-area"); try { validate_btn_load(); const tempURLResponse = await fetch("https://kehlb2npjok6hvaayrvfs5mgtm0cxnci.lambda-url.us-west-1.on.aws/"); const {s3Uri, uploadUrl} = await tempURLResponse.json(); if (tempURLResponse.status !== 200) throw new Error(`Obtaining upload URL failed with ${tempURLResponse.status}`); if (! uploadUrl) throw new Error(`Missing upload URL`); const cpl_doc = await document.getElementById("fld-load-file").files[0].text(); const cplPutResponse = await fetch(uploadUrl, { method: "PUT", headers: { "Content-Type": "text/xml" }, body: cpl_doc, credentials: "omit" }); if (cplPutResponse.status !== 200) throw new Error(`Uploading CPL failed with ${cplPutResponse.status}`); const cplValidateResponse = await fetch("https://api.imf.sandflow.com/cplv", { method: "POST", headers: { "Content-Type": "text/plain" }, body: s3Uri, credentials: "omit" }); document.getElementById("validation-results").classList.remove("d-none"); const cpl_div = document.getElementById("cpl-area"); if (cplValidateResponse.status !== 200) throw new Error(`Server error while validating: ${cplValidateResponse.status}`); const rv = await cplValidateResponse.json(); if (rv.events.length == 0) { output_div.innerHTML = "CPL validation passed"; } else { let h = ``; for (let e of rv.events) { h += `` } h += `
LevelMessage
${e.level}${e.msg}
`; output_div.innerHTML = h; } cpl_div.innerText = rv.cpl; } catch (e) { show_error(e.message); output_div.innerHTML = `Error occurred before validation completed: ${e.message}`; } finally { validate_btn_reset(); } } var err_toast; addEventListener("DOMContentLoaded", () => { err_toast = new bootstrap.Toast(document.getElementById("runtime-error-toast")); });