<?php

$lamin = floatval($_GET["lamin"]);
$lomin = floatval($_GET["lomin"]);
$lamax = floatval($_GET["lamax"]);
$lomax = floatval($_GET["lomax"]);


// Server log file
$nameLogFile="serverPositions.log";


// mysql DB Credentials
$servername = "localhost";
$uname = "vintage";
$password = "";
$typeDBName = "aircraftTypes";

$connType = new mysqli($servername, $uname, $password, $typeDBName);

$client_id = "mcadoo-api-client";
$client_secret = "ayKnHbpf4XAGUs0bX8Nr07as4m3Cha1t";

// Prepare POST data
$data = [
    "grant_type" => "client_credentials",
    "client_id" => $client_id,
    "client_secret" => $client_secret,
];

// Initialize cURL
$ch = curl_init("https://auth.opensky-network.org/auth/realms/opensky-network/protocol/openid-connect/token");

// Set cURL options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/x-www-form-urlencoded"
]);

// Execute request
$response = curl_exec($ch);

if (curl_errno($ch)) {
    die("cURL error: " . curl_error($ch));
}

curl_close($ch);

// Decode JSON response
$result = json_decode($response, true);

if (isset($result['access_token'])) {
    $token = $result['access_token'];
//    echo "Access token: " . $token . PHP_EOL;
} else {
    echo "Error fetching access token: " . $response . PHP_EOL;
}




        $handleCurl = curl_init();

$url = 	'https://auth.opensky-network.org/api/states/all?'
	. 'lamin=' . $lamin 
	. '&lomin=' . $lomin
	. '&lamax=' . $lamax
	. '&lomax=' . $lomax;

        curl_setopt($handleCurl, CURLOPT_URL, $url);

        curl_setopt($handleCurl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($handleCurl, CURLOPT_TIMEOUT, 120);
//      curl_setopt($handleCurl, CURLOPT_CONNECTTIMEOUT, 5);

        curl_setopt($handleCurl, CURLOPT_FAILONERROR, true);

	curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer " . $token
]);
        $respValid=1;

        $resp = curl_exec($handleCurl);


        if (curl_errno($handleCurl))
        {
		$handleLogFile = fopen($nameLogFile,"a");
                fwrite($handleLogFile,date("Y-m-d H:i:s "));
                fwrite($handleLogFile,"ERROR: CURL Error: ");
                fwrite($handleLogFile,curl_error($handleCurl));
                fwrite($handleLogFile,"\n");
		fclose($handleLogFile);


                $respValid=0;
        }
        curl_close($handleCurl);
        if ($respValid==1)
        {
                $array = json_decode($resp);

                if (json_last_error() !== JSON_ERROR_NONE)
                {

			$handleLogFile = fopen($nameLogFile,"a");
                        fwrite($handleLogFile,date("Y-m-d H:i:s "));
                        fwrite($handleLogFile,"ERROR: Invalid JSON\n");
			fclose($handleLogFile);

                        $respValid=0;
                }
        }

echo '{"states":[';

        if ($respValid==1)
        {
	$first=1;
        foreach($array->{'states'} as $arrayState)
        {

//              print_r("$arrayState[1]");
//              print_r("\n");

                // Calc Baro Altitude in Ft
                $alt=strval(intval(floatval($arrayState[7])*3.28084));

                // Calc vertical speed in FPM
                $vSpeed=strval(intval(floatval($arrayState[11])*196.8504));


                // Calc ground speed in Knots
                $gs=strval(intval(floatval($arrayState[9])*1.944));

                // Track
                $track=strval(intval(floatval($arrayState[10])));

                // air_ground
                $air_ground = ($arrayState[8] ? "1" : "0");

                // Get Type


                $typeResult=$connType->query("select type from type where
                 hexid='" . $arrayState[0] ."'");
                 if ($typeResult->num_rows > 0)
                 {
                        $typeStr=$typeResult->fetch_assoc()["type"];
                }
                else
                {
                        $typeStr="";
                }


		if ($first==1)
		{
			echo '[';
			$first=0;
		}
		else
		{
			echo ',[';
		}
		echo '"' . $arrayState[0] . '",'; 
		echo '"' . $arrayState[1] . '",'; 
		echo $arrayState[4] . ','; 
		echo $arrayState[5] . ','; 
		echo $arrayState[6] . ','; 
		echo $alt . ',';
		if ($air_ground == "1")
		{
			echo 'true,';
		}
		else
		{
			echo 'false,';
		}
		echo $gs . ',';
		echo $track . ','; 
		echo $vSpeed . ','; 
		echo '"';
		echo $typeStr ;
		echo '"]';


		
}

	}
	else
	{
	echo 'oops';
}

	echo ']}';

?>
