File: /var/www/limestate-api/Models/Api.php
<?php
class Api {
static $version = '1.0';
static $userId = 0;
static $apps = array(
'mobile' => 'sdfmwn2',
'foachbot' => 'mysecret'
);
/**
* @param bool|array $data
*/
public static function success($data = null)
{
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
$res = array(
'status' => 'ok'
);
if (!is_null($data)) {
$res['data'] = $data;
}
echo json_encode($res);
exit;
}
/**
* @param (int) $code – код ошибки
* @param string|bool $msg — сообщение
*/
public static function error($code, $msg = false)
{
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
$res = array(
'status' => 'error',
'code' => $code,
'msg' => $msg
);
echo json_encode($res);
exit;
}
public static function getValidCrc($app)
{
$params = strtolower($_SERVER['REQUEST_METHOD']) == 'post' ? $_POST : $_GET;
unset($params['crc']);
unset($params['url']);
$secret = self::$apps[$app];
return md5(json_encode($params) . 'todoAPI' . $secret);
}
public static function checkCrc($crc, $app = false)
{
return true;
if ($app) {
$validCrc = self::getValidCrc($app);
return $crc == $validCrc;
} else {
foreach (self::$apps as $app => $secret) {
$validCrc = self::getValidCrc($app);
if ($crc == $validCrc) return true;
}
return false;
}
}
public static function getVar($name, $default = NULL, $method = NULL, $type = NULL, $required = true)
{
$var = Data::getVar($name, $default, $method);
if ($var === NULL) {
if ($required) {
Api::error(3, 'Отсутсвует обязательный параметр: ' . $name);
} else {
return $default;
}
}
switch ($type) {
case 'email':
if (!filter_var($var, FILTER_VALIDATE_EMAIL)) {
Api::error(4, 'Невалидный формат поля email: ' . $var);
}
break;
case 'password':
if (trim($var) == '') {
Api::error(5, 'Пароль не может быть пустым.');
}
break;
case 'token':
if (!Token::findUser($var)) {
Api::error(1, 'Неправильный token');
}
break;
case '[0,1]':
if (!is_numeric($var) || !in_array($var, array(0, 1))) {
Api::error(1, 'Неправильное значение поля ' . $name . '(' . $var . '). Допустимые значения: 0 или 1');
}
break;
default:
break;
}
return $var;
}
}