You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.7 KiB
PHP
68 lines
1.7 KiB
PHP
<?php
|
|
|
|
require_once __DIR__ . "/FixPhrase.lib.php";
|
|
|
|
/**
|
|
* Build and send a simple JSON response.
|
|
* @param string $msg A message
|
|
* @param string $status "OK" or "ERROR"
|
|
* @param array $data More JSON data
|
|
*/
|
|
function sendJsonResp(string $msg = null, string $status = "OK", array $data = null) {
|
|
$resp = [];
|
|
if (!is_null($data)) {
|
|
$resp = $data;
|
|
}
|
|
if (!is_null($msg)) {
|
|
$resp["msg"] = $msg;
|
|
}
|
|
$resp["status"] = $status;
|
|
header("Content-Type: application/json");
|
|
exit(json_encode($resp));
|
|
}
|
|
|
|
function exitWithJson(array $json) {
|
|
header("Content-Type: application/json");
|
|
exit(json_encode($json));
|
|
}
|
|
|
|
$output = [];
|
|
|
|
try {
|
|
if (!empty($_GET["words"])) {
|
|
// convert words to coordinates
|
|
$words = urldecode($_GET["words"]);
|
|
$words = trim(strtolower($words));
|
|
$words = preg_replace('/\s+/', ' ', $words);
|
|
$coords = FixPhrase::decode($words);
|
|
|
|
$output = [
|
|
"status" => "OK",
|
|
"action" => "decodeFromWords",
|
|
"words" => $words,
|
|
"coords" => $coords
|
|
];
|
|
} else if (!empty($_GET["latitude"]) && !empty($_GET["longitude"])) {
|
|
// convert coordinates to words
|
|
$lat = round($_GET["latitude"], 4);
|
|
$lon = round($_GET["longitude"], 4);
|
|
|
|
$words = FixPhrase::encode($lat, $lon);
|
|
$output = [
|
|
"status" => "OK",
|
|
"action" => "encodeToWords",
|
|
"words" => $words,
|
|
"coords" => [
|
|
$lat,
|
|
$lon
|
|
]
|
|
];
|
|
} else {
|
|
throw new Exception("Must supply either a string of words or a latitude/longitude pair.");
|
|
}
|
|
} catch (Exception $ex) {
|
|
sendJsonResp($ex->getMessage(), "ERROR");
|
|
}
|
|
|
|
exitWithJson($output);
|