/** * Devuelve una respuesta en formato JSON con el estado y el mensaje. * * @param string|array $data mensaje a devolver * @param int $status devuelve el estado * @param string $action con la accion a realizar * @return bool */ public static function printJSON($data, $status = 1, $action = '') { if (!is_string($data) && !is_array($data)) { return false; } if (!is_array($data)) { $json = array('status' => $status, 'description' => Language::t(Json::safeJsonString($data)), 'action' => $action); } else { $data['status'] = $status; $data['action'] = $action; $json = Json::safeJson($data); } header('Content-type: application/json'); exit(json_encode($json)); }
/** * Devuelve un array con las cadenas formateadas para JSON * * @param $data mixed * @return mixed */ public static function safeJson(&$data) { if (is_array($data) || is_object($data)) { array_walk_recursive($data, function (&$value) { if (is_object($value)) { foreach ($value as &$attribute) { Json::safeJsonString($attribute); } return $value; } else { return Json::safeJsonString($value); } }); } elseif (is_string($data)) { return self::safeJsonString($data); } return $data; }
use SMD\Core\Init; use SMD\Http\Request; use SMD\Http\Response; use SMD\Util\Json; define('APP_ROOT', '.'); require APP_ROOT . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'Base.php'; Init::start(); $apiToken = Request::analyze('token'); $action = Request::analyze('action', 0); $Api = new Api(); if (!$Api->checkToken($apiToken)) { Response::printJSON('Token inválido'); } $data = null; switch ($action) { case Api::ACTION_EVENTS: $data = $Api->getEvents(); break; case Api::ACTION_DOWNTIMES: $data = $Api->getDowntimes(); break; case Api::ACTION_CHECK: Response::printJSON('V ' . implode('.', \SMD\Util\Util::getVersion(true)), 0); break; default: Response::printJSON('Petición inválida'); } header('Content-type: application/json'); $json = array('status' => 0, 'data' => $data, 'action' => $action); die(Json::getJson($json));