$baseDir = __DIR__ . '/..'; require_once $baseDir . '/vendor/autoload.php'; $kernel = Atabase\Bootstrapper::KERNEL_DEV; $bootstrapper = new Atabase\Bootstrapper($kernel, $baseDir); $bootstrapper->init(); global $CONFIG; $CONFIG->setValue("general", "baseDir", $baseDir); } catch (PDOException $e) { $logger = new Monolog\Logger('database'); $logger->pushHandler(new Monolog\Handler\StreamHandler($baseDir . '/tmp/database.log', Monolog\Logger::DEBUG)); $logger->addCritical($e->getMessage()); header(Atabase\Exceptions\HTTPStatusLookup::httpHeaderFor(500)); echo Atabase\Exceptions\HTTPStatusLookup::getMessageForCode(500) . ' - Database Connection Error'; exit; } catch (HTTPErrorException $e) { $logger = new Monolog\Logger('kernel'); $logger->pushHandler(new Monolog\Handler\StreamHandler($baseDir . '/tmp/kernel.log', Monolog\Logger::DEBUG)); $logger->addCritical($e->getMessage()); $e->terminate(" - Kernel Loading Failed"); } /***************************************/ /* LANGUAGES TEST */ /***************************************/ echo "<h1>Languages test</h1>"; global $TEMPLATE, $ARGS, $CONFIG; $translation = Models\Translation::loadOne('1'); $languageCategory = Models\LanguageCategory::loadOne('1'); $language = MOdels\Language::loadOne('1'); echo "<p>" . $translation . "</p>"; echo "<p>" . $languageCategory . "</p>"; echo "<p>" . $language . "</p>";
if (endpoints\Auth::validateToken($token)) { return $next($request, $response); } } return $response->withStatus(401); }); $checkProxyHeaders = true; // Note: Never trust the IP address for security processes! $trustedProxies = ['10.0.0.1', '10.0.0.2']; // Note: Never trust the IP address for security processes! $app->add(new \RKA\Middleware\IpAddress($checkProxyHeaders, $trustedProxies)); $stream = new \Monolog\Handler\StreamHandler(__DIR__ . '/../log/app.log', \Monolog\Logger::DEBUG); $logger = new \Monolog\Logger('app'); $logger->pushHandler($stream); $app->add(function ($request, $response, $next) use($logger) { $response = $next($request, $response); $uri = $request->getUri()->getPath(); $statusCode = $response->getStatusCode(); switch ($response->getStatusCode()) { case 500: $logger->addCritical('Oops!!! the server got 500 error', ['ip' => $request->getAttribute('ip_address'), 'uri' => $uri, 'status' => $statusCode]); break; case 404: $logger->addWarning('Someone calling un-existing API endpoint', ['ip' => $request->getAttribute('ip_address'), 'uri' => $uri, 'status' => $statusCode]); break; default: $logger->addInfo('Someone calling existing API endpoint', ['ip' => $request->getAttribute('ip_address'), 'uri' => $uri, 'status' => $statusCode]); break; } return $response; });
$app->get('/hello/:name', function ($name) { echo "Hello, {$name}"; phpinfo(); global $log; $log->addDebug('Hello'); }); $app->get('/v1/sample', function () { global $log; try { try { $db_url = parse_url(getenv('CLEARDB_DATABASE_URL')); $dsn = sprintf('mysql:host=%s;dbname=%s', $db_url['host'], substr($db_url['path'], 1)); $pdo = new PDO($dsn, $db_url['user'], $db_url['pass']); } catch (PDOException $e) { $apiException = new ApiException('Cannot access DB.', 500, 'Check DB status and CLEARDB_DATABASE_URL Config Vars', 500); $log->addCritical($apiException->getString()); $log->addCritical($e->getMessage()); throw $apiException; } $sql = 'select id,sample from samples'; $statement = $pdo->query($sql); if ($statement === false) { $message = 'Cannot query: ' . $sql; $apiException = new ApiException($message, 500, $message, 500); $log->addCritical($apiException->getString()); throw $apiException; } else { $row = $statement->fetch(PDO::FETCH_ASSOC); $log->addDebug(json_encode($row)); $result = array('result' => $row); print_r(json_encode($result));