2020-06-23 08:14:54 +02:00
|
|
|
<!doctype html>
|
|
|
|
<html lang="en">
|
2020-06-22 17:34:10 +02:00
|
|
|
<head>
|
2020-06-23 08:14:54 +02:00
|
|
|
<meta charset="utf-8">
|
|
|
|
<title>Test Http Request From JS</title>
|
|
|
|
</head>
|
|
|
|
<body onload="init()">
|
|
|
|
<h1>Test Http Request From JS</h1>
|
|
|
|
<div id="div-result"></div>
|
2020-06-22 17:34:10 +02:00
|
|
|
</body>
|
2020-06-23 09:16:16 +02:00
|
|
|
<script src="asciidoctor/asciidoctor.js"></script>
|
2020-06-23 08:14:54 +02:00
|
|
|
<script>
|
|
|
|
function init() {
|
2020-06-23 09:16:16 +02:00
|
|
|
const asciiDoctor = Asciidoctor();
|
2020-06-23 08:14:54 +02:00
|
|
|
const github_v3 ="application/vnd.github.v3.html";
|
|
|
|
const divResult = document.getElementById("div-result");
|
|
|
|
const requestDataList = [
|
2020-06-23 09:16:16 +02:00
|
|
|
{ url: "https://sonarsource.github.io/rspec/rules/S3457/see.adoc", accept: "*", data: null },
|
2020-06-23 08:14:54 +02:00
|
|
|
{ url: "https://sonarsource.github.io/rspec/rules/S3457/java/rule.adoc", accept: "*", data: null },
|
2020-06-23 14:40:50 +02:00
|
|
|
{ url: "https://raw.githubusercontent.com/SonarSource/rspec/master/rules/S3457/java/rule.adoc", accept: "*", data: null },
|
2020-06-23 08:14:54 +02:00
|
|
|
{ url: "https://raw.githubusercontent.com/SonarSource/sonar-java/master/.github/workflows/dogfood.yml", accept: "*", data: null },
|
|
|
|
{ url: "https://api.github.com/repos/SonarSource/sonar-java/branches", accept: github_v3, data: null }
|
|
|
|
];
|
|
|
|
for (let i = 0; i < requestDataList.length; i++) {
|
|
|
|
const requestData = requestDataList[i];
|
|
|
|
try {
|
|
|
|
const xhr = new XMLHttpRequest();
|
|
|
|
divResult.innerText = divResult.innerText + "Call " + requestData.url + "\n";
|
|
|
|
xhr.open('GET', requestData.url);
|
|
|
|
xhr.setRequestHeader("Accept", requestData.accept);
|
|
|
|
if (requestData.type) {
|
|
|
|
xhr.setRequestHeader("Content-Type", requestData.type);
|
|
|
|
}
|
|
|
|
xhr.onreadystatechange = function() {
|
|
|
|
let requestState = "Request " + requestData.url + " readyState: " + xhr.readyState;
|
|
|
|
if(xhr.readyState === 4) {
|
|
|
|
requestState += " status: " + xhr.status;
|
|
|
|
if (xhr.status === 200) {
|
|
|
|
requestState += "\n----------------------\n" +
|
|
|
|
xhr.getAllResponseHeaders() +
|
|
|
|
"\n" +
|
|
|
|
xhr.responseText +
|
|
|
|
"\n----------------------\n";
|
2020-06-23 09:16:16 +02:00
|
|
|
if (requestData.url.endsWith(".adoc")) {
|
2020-06-23 14:32:26 +02:00
|
|
|
const baseDir = requestData.url.replace(/\/[^/]*$/, "/");
|
|
|
|
const opts = {safe: 'safe', base_dir: baseDir, attributes: { } };
|
|
|
|
let html = asciiDoctor.convert(xhr.responseText, opts);
|
2020-06-23 09:16:16 +02:00
|
|
|
requestState += html + "\n----------------------\n";
|
|
|
|
}
|
2020-06-23 08:14:54 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
divResult.innerText = divResult.innerText + requestState + "\n";
|
|
|
|
}
|
|
|
|
xhr.send(requestData.data);
|
|
|
|
} catch (e) {
|
|
|
|
let exceptionMessage = "";
|
|
|
|
if (e.message) {
|
|
|
|
exceptionMessage += e.message;
|
|
|
|
}
|
|
|
|
if (e.stack) {
|
|
|
|
exceptionMessage += ' | stack: ' + e.stack;
|
|
|
|
}
|
|
|
|
divResult.innerText = divResult.innerText + "Exception while calling " + requestData.url + "\n" + exceptionMessage + "\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
2020-06-22 17:34:10 +02:00
|
|
|
</html>
|