<?php
	$phpVer = 'PHP version: ' . phpversion();
?>

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="Robert Tolar">
<title>API Latency Test (php version: <?php echo $phpVer; ?>)</title>
</head>

<body>
	<div id="idOutput"></div>

	<script>
	
	let phpScript = '<br><h2><strong>php script for "bare-bones-api.php"</strong></h2><br>' +
	'header("Access-Control-Allow-Origin: *");<br>' +
	'header("Content-Type: application/json; charset=UTF-8");<br>' +
	'header("Access-Control-Allow-Methods: OPTIONS,GET,POST,PUT,DELETE");<br>' +
	'header("Access-Control-Max-Age: 3600");<br>' +
	'header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");<br><br>' +
	'http_response_code(200);<br>' +
	'$response = (object)["data" => "Yabba Dabba"];<br>' +
	'exit(json_encode($response));<br>';

	function barecall () {
		return fetch('bare-bones-api.php', { method: 'GET' })
		.then ((response) => {
			if (response.ok) {
				// all good, move on to next link in promise chain
				return response.text();
			}
			else
				return Promise.reject(new Error('Server Error'));
		})
		.then ((text) => {
			return Promise.resolve(text); 
		})
		.catch((err) => {
			return Promise.reject(new Error("Exception caught in barecall(): " + err.message));
		}); 
	}

	document.addEventListener('DOMContentLoaded', (e) => {
		let startTime, endTime; 
		startTime = new Date();
		
		barecall().then((text) => {
			totalTime = new Date() - startTime;
			let report = '<h1>Total time for API call: ' + totalTime + ' ms</h1><br>';
			document.getElementById("idOutput").innerHTML = report + phpScript + '<br>' + text;
			return Promise.resolve(true); 
		}).catch((err) => {
			document.getElementById("idOutput").innerHTML = err.message;
		});
	});
	
	</script>
</body>
</html>
