blueweather/api/json.php
2019-08-08 15:27:30 +02:00

107 lines
3.1 KiB
PHP
Executable file

<?php
/**
* BlueWeather
*
* PHP version 7.2
*
* @param locId
* @param range (range[from]: from UNIX time; range[to]: to UNIX time)
* @param maxVals (maximum measvals to be transmitted; if more are present
* in the timespan, the avarage will be calculated)
*
* @category Tools
* @package BlueWeather
* @author Dorian Zedler <dorian@itsblue.de>
* @license GPLV3 gpl.com
* @link itsblue.de
*/
require_once './config.php';
require_once './blueweather.php';
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
$blueweather = new BlueWeather($config);
//$_GET['command'] = '{"header":1001,"body":"undefined"}';
if (isset($_GET['locId'])) {
// get data of given location
$data = $blueweather->getLocationData(
$_GET['locId'], $_GET['range'], $_GET['maxVals']
);
} elseif (isset($_POST['submitSensorData'])) {
// sensor data is being submited
$sensorData = json_decode($_POST['submitSensorData'], true);
$ret = $blueweather->processSensorData($sensorData);
$data = $ret;
if ($ret['status'] !== 200) {
$log = "\n[".date("M,d,Y h:i:s A")."] ret: ".
json_encode($ret)." request: ".json_encode($_POST['submitSensorData']);
//echo $log;
file_put_contents("./error.log", $log, FILE_APPEND);
}
} elseif (isset($_GET['command'])) {
// some user-data api request
$request = json_decode($_GET['command'], true);
if (!$request || !isset($request['header'])) {
$data = array("header"=>400);
} else {
switch ($request['header']) {
case 1000:
// user login
if (!isset($request['body']['username'])
|| !isset($request['body']['password'])
) {
$data = array("header"=>400);
} else {
$token = $blueweather->loginUser(
$request['body']['username'],
$request['body']['password']
);
if ($token !== '') {
$data = array("header"=>200, "body"=>$token);
} else {
$data = array("header"=>401);
}
}
break;
case 1001:
// check session
if (!isset($request['body'])) {
$data = array("header"=>400);
} else {
$ret = $blueweather->getUserInfo(
$blueweather->checkSession($request['body'])
);
if ($ret === -1) {
$data = array("header"=>401);
} else {
$data = array("header"=>200, "data"=>$ret);
}
}
break;
case 1002:
// destroy session
if (!isset($request['body'])) {
$data = array("header"=>400);
} else {
$data = array(
"header"=>$blueweather->destroySession($request['body'])
);
}
}
}
} else {
$data = $blueweather->getAllLocations();
}
http_response_code(200);
echo json_encode($data);