/** * check database connection based on provided setting */ public function checkConnection() { $success = false; $message = ''; $config = $this->getPostConfiguration(); try { $this->makeConnection($config); /** * Just trying to show tables with current connection */ switch ($config['driver']) { case 'mysql': $tables = Capsule::select('show tables'); break; case 'sqlite': $tables = Capsule::select("SELECT * FROM sqlite_master WHERE type='table'"); break; case 'sqlsrv': $tables = Capsule::select("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'"); break; case 'pgsql': $tables = Capsule::select("SELECT * FROM pg_catalog.pg_tables"); break; } $success = true; $message = 'Successfully connected!'; } catch (Exception $e) { $success = false; $message = $e->getMessage(); } Response::headers()->set('Content-Type', 'application/json'); Response::setBody(json_encode(array('success' => $success, 'message' => $message, 'config' => $config))); }
public static function dispatch() { $url = new Url(); $uri = $url->getPath(); foreach (array_reverse(self::$routes, true) as $route => $class) { if (preg_match("~^{$route}\$~", $uri, $params)) { Router::$current = $class; $return = call_user_func_array(array('Controller', 'dispatch'), array_merge(array($class), array_slice($params, 1))); if (!(false === $return)) { $vars = get_class_vars($class); $type = 'text/html'; if (isset($vars['type'])) { $type = $vars['type']; } # PHP >= 5.3 # if ( isset($class::$type) ) # $type = $class::$type; //Response::setHeader('Content-Type', 'application/xhtml+xml'); Response::setHeader('Content-Type', "{$type};charset=UTF-8"); Response::setBody($class, $return); return; } Router::$current = null; } } if (Response::getHttpResponseCode() == 200) { $class = 'Error404'; $return = Controller::dispatch($class); Response::setHeader('Content-Type', 'text/html;charset=UTF-8'); Response::setBody($class, $return); //Response::setHeader('HTTP/1.0 404 Not Found'); //Response::setHttpResponseCode(404); //Response::setBody('404', 'Error 404'); } }
/** * Sets the response body and status code header * * @param mixed $data * @param integer $status * @return void */ protected function respond($data, $status = null) { if ($this->performedRespond) { throw new DoubleRespond(); } $this->response->setStatus(!empty($status) ? $status : $this->status); $this->response->setBody($data); $this->performedRespond = true; }
public function response($code = 200, $headers = array()) { $response = new Response(); $body = json_encode(['success' => $this->success, 'data' => $this->data]); $defaultOptions = ['Content-Type' => 'application/json', 'Content-Length' => strlen($body)]; $finalHeaders = array_merge($defaultOptions, $headers); $response->setHeaders($finalHeaders); $response->setBody($body); $response->respondWith($code); return $response; }
private function ConvertCurlResponse($response, $ch) { $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $header = substr($response, 0, $header_size); $body = substr($response, $header_size); $r = new Response(); $r->setHeaders($this->http_parse_headers($header)); $r->setHttpCode(curl_getinfo($ch, CURLINFO_HTTP_CODE)); $r->setBody($body); return $r; }
public static function error($errno) { if (isset(self::$errors[$errno])) { Response::setHeader('Status', self::$errors[$errno]['Status']); if (isset(self::$errors[$errno]['Class'])) { self::instance(self::$errors[$errno]['Class']); } else { Response::setHeader('Content-Type', 'text/plain'); Response::setBody(self::$errors[$errno]['Status']); } } }
function testToString() { $response = new Response(200, ['Content-Type' => 'text/xml']); $response->setBody('foo'); $expected = <<<HI HTTP/1.1 200 OK Content-Type: text/xml foo HI; $this->assertEquals($expected, (string) $response); }
function Auth() { if (!Sentry::check()) { if (Request::isAjax()) { Response::headers()->set('Content-Type', 'application/json'); Response::setBody(json_encode(array('success' => false, 'message' => 'Session expired or unauthorized access.', 'code' => 401))); App::stop(); } else { $redirect = Request::getResourceUri(); Response::redirect(App::urlFor('login') . '?redirect=' . base64_encode($redirect)); } } }
public static function outputError($exception) { if (PHP_SAPI == 'cli') { echo $exception->getMessage() . "\nFile: " . $exception->getFile() . ' on line ' . $exception->getLine() . "\n\n" . $exception->getTraceAsString() . "\n"; // exit with an error code exit(1); } // Write the error to log file @error_log('Error 404 Page Not Found: ' . $_SERVER['REQUEST_URI']); $response = new Response(); $response->setStatusCode(404); $response->setBody(Controller::outputError('errors/404', ['message' => $exception->getMessage()])); return $response; }
/** * @runInSeparateProcess * * Unfortunately we have no way of testing if the HTTP response code got * changed. */ function testSend() { if (!function_exists('xdebug_get_headers')) { $this->markTestSkipped('XDebug needs to be installed for this test to run'); } $response = new Response(204, ['Content-Type', 'text/xml']); $response->setBody('foo'); ob_start(); Sapi::sendResponse($response); $headers = xdebug_get_headers(); $result = ob_get_clean(); header_remove(); $this->assertEquals(["0: Content-Type", "1: text/xml"], $headers); $this->assertEquals('foo', $result); }
private function doExecute($curlHandle, Request $request) { curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10); curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true); curl_setopt($curlHandle, CURLOPT_HEADER, true); curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Accept: ' . $request->getHttpAccept())); $res = curl_exec($curlHandle); $info = curl_getinfo($curlHandle); $response = new Response(); $response->setStatus($info['http_code']); if (false !== $res) { $response->setHeaders(substr($res, 0, $info['header_size'])); $response->setBody(substr($res, -$info['download_content_length'])); } return $response; }
/** * check database connection based on provided setting */ public function checkConnection() { $success = false; $message = ''; $config = $this->getPostConfiguration(); try { $this->makeConnection($config); $tables = Capsule::select('show tables'); $success = true; $message = 'Successfully connected!'; } catch (Exception $e) { $success = false; $message = $e->getMessage(); } Response::headers()->set('Content-Type', 'application/json'); Response::setBody(json_encode(array('success' => $success, 'message' => $message, 'config' => $config))); }
/** * @runInSeparateProcess * * Unfortunately we have no way of testing if the HTTP response code got * changed. */ function testSend() { if (!function_exists('xdebug_get_headers')) { $this->markTestSkipped('XDebug needs to be installed for this test to run'); } $response = new Response(204, ['Content-Type' => 'text/xml;charset=UTF-8']); // Second Content-Type header. Normally this doesn't make sense. $response->addHeader('Content-Type', 'application/xml'); $response->setBody('foo'); ob_start(); Sapi::sendResponse($response); $headers = xdebug_get_headers(); $result = ob_get_clean(); header_remove(); $this->assertEquals(["Content-Type: text/xml;charset=UTF-8", "Content-Type: application/xml"], $headers); $this->assertEquals('foo', $result); }
public static function outputError($message = null, $file = false, $line = false, $trace = false) { // Message for log $errorMessage = 'Error ' . $message . ' in ' . $file . ' line: ' . $line; // Write the error to log file @error_log($errorMessage); // Just output the error if the error source for view file or if in cli mode. if (PHP_SAPI == 'cli') { exit($errorMessage); } $code = []; if (!$file) { goto constructViewData; } $fileString = file_get_contents($file); $arrLine = explode("\n", $fileString); $totalLine = count($arrLine); $getLine = array_combine(range(1, $totalLine), array_values($arrLine)); $startIterate = $line - 5; $endIterate = $line + 5; if ($startIterate < 1) { $startIterate = 1; } if ($endIterate > $totalLine) { $endIterate = $totalLine; } for ($i = $startIterate; $i <= $endIterate; $i++) { $html = '<span style="margin-right:10px;background:#CFCFCF;">' . $i . '</span>'; if ($line == $i) { $html .= '<span style="color:#DD0000">' . htmlentities($getLine[$i]) . "</span>\n"; } else { $html .= htmlentities($getLine[$i]) . "\n"; } $code[] = $html; } constructViewData: $data = ['message' => $message, 'file' => $file, 'line' => $line, 'code' => $code, 'trace' => $trace]; $response = new Response(); $response->setStatusCode(500); $response->setBody(Controller::outputError('errors/500', $data)); return $response; }
public static function runApp() { if (!Request::isАuthorized()) { Response::setCode(401); return; } $matchedResource = Router::getMatchedRouterResource(Request::getMethod(), Request::getCleanRequestUrl()); if ($matchedResource === null) { Response::setCode(404); return; } try { $response = self::executeResoruceAction($matchedResource[0], $matchedResource[1], Router::getMachedRouteParameters()); if ($response === false) { Response::setCode(404); } else { Response::setBody($response); } } catch (\Exception $e) { Response::setCode(500); } }
private static function startDispatch() { $buffering = !IN_CLI && self::$outputBuffer; if ($buffering) { ob_start(); } try { self::dispatch(); $controllerPath = self::$request->getControllerPath(); $actionFile = self::$request->getActionFile(); } catch (Exception $e) { if (IN_CLI) { throw $e; return; } $controllerPath = 'error'; self::$request->setUserParam('exception', $e); $controller = new ErrorController(); if ($e instanceof PageNotFoundException) { $actionFile = 'page-not-found'; self::$response->setHttpResponseCode(404); $controller->pageNotFoundAction(); } else { $actionFile = 'internal-error'; self::$response->setHttpResponseCode(500); $controller->internalErrorAction(); } } if (self::$shouldRender && !self::$response->isRedirect()) { self::$view->render($controllerPath, $actionFile); } if ($buffering && !self::$response->isRedirect()) { self::$response->setBody(ob_get_clean()); } self::$response->sendResponse(); }
/** * Vérification de la connection sur base des informations fournies */ public function checkConnection() { $success = false; $message = ''; $config = $this->getPostConfiguration(); try { $this->makeConnection($config); /** * Essaie de montrer les tables ! */ switch ($config['driver']) { case 'mysql': $tables = Capsule::select('show tables'); break; } $success = true; $message = 'Connexion établie avec succés !'; } catch (Exception $e) { $success = false; $message = $e->getMessage(); } Response::headers()->set('Content-Type', 'application/json'); Response::setBody(json_encode(array('success' => $success, 'message' => $message, 'config' => $config))); }
<?php /** * Sample group routing with user check in middleware */ Route::group('/admin', function () { if (!Sentry::check()) { if (Request::isAjax()) { Response::headers()->set('Content-Type', 'application/json'); Response::setBody(json_encode(array('success' => false, 'message' => 'Session expired or unauthorized access.', 'code' => 401))); App::stop(); } else { $redirect = Request::getResourceUri(); Response::redirect(App::urlFor('login') . '?redirect=' . base64_encode($redirect)); } } }, function () use($app) { /** sample namespaced controller */ Route::get('/', 'Admin\\AdminController:index')->name('admin'); foreach (Module::getModules() as $module) { $module->registerAdminRoute(); } }); Route::get('/login', 'Admin\\AdminController:login')->name('login'); Route::get('/logout', 'Admin\\AdminController:logout')->name('logout'); Route::post('/login', 'Admin\\AdminController:doLogin'); /** Route to documentation */ Route::get('/doc(/:page+)', 'DocController:index'); foreach (Module::getModules() as $module) { $module->registerPublicRoute(); }
public function create($request) { if (Session::isActive()) { $req = $request->getParameters(); if (isset($req['members'], $req['creator'], $req['subject']) && !empty($req['members']) && !empty($req['creator'])) { $membersStr = Utils::secure($req['members']); $creator = Utils::secure($req['creator']); $subject = Utils::secure($req['subject']); $subject = !empty($subject) ? $subject : 'Sans titre'; if ($sender = UserChannel::find($creator)) { if (Utils::stringStartsWith($membersStr, ';')) { $membersStr = substr_replace($membersStr, '', 0, 1); } if (Utils::stringEndsWith($membersStr, ';')) { $membersStr = substr_replace($membersStr, '', -1); } $membersStr = preg_replace('/\\s+/', '', $membersStr); $membersIdsFinal = ';'; if (strpos($membersStr, ';')) { foreach (explode(';', $membersStr) as $destId) { if ($dest = UserChannel::find_by_name($destId)) { $membersIdsFinal .= $dest->id . ';'; } else { $response = new Response(500); $response->setBody('Error: Le destinataire <' . $destId . '> n\'existe pas !'); return $response; } } } else { if ($chann = UserChannel::find_by_name($membersStr)) { $membersIdsFinal .= $chann->id . ';'; } else { $response = new Response(500); $response->setBody('Error: les destinataires doivent être séparés par un \';\' !'); return $response; } } if ($membersIdsFinal != ';') { $membersIdsFinal .= $sender->id . ';'; Conversation::createNew($subject, $sender, $membersIdsFinal); return new Response(200); } } } } return new Response(500); }
/** * 处理异常 * * @param Exception $e */ public static function handleException(\Exception $e) { restore_error_handler(); restore_exception_handler(); // clean buffer if (!headers_sent()) { ob_get_level() and ob_clean(); } $response = new Response(); try { $status = $e instanceof \Lime\Exception\NotFoundException ? 404 : 500; $response->setStatus($status); $response->setBody($status == 404 ? static::notFound($e) : static::error($e)); $response->respond(); } catch (\Exception $e) { /* 异常处理中出错的最后处理 */ ob_get_level() and ob_clean(); header('Content-Type: text/plain; charset=UTF-8', true, 500); echo static::text($e); } exit(1); }
public function destroy($id, $request) { $comment = Comment::exists($id) ? Comment::find($id) : false; if (Session::isActive() && (Session::get()->isModerator() || Session::get()->isAdmin() || $comment && $comment->getVideo()->getAuthor()->belongToUser(Session::get()->id) || $comment && $comment->getAuthor()->belongToUser(Session::get()->id))) { $comment->erase(Session::get()); $response = new Response(200); $response->setBody("done"); return $response; } $response = new Response(500); $response->setBody("error"); return $response; }
$error = 'invalid parameter'; $error_description = 'invalid parameter scope check the documentation'; $http_code = 406; } } } if (!empty($server->request('nonce'))) { $nonce = $server->request('nonce'); if ($nonce > time()) { $error = 'invalid request'; $error_description = 'request expired or corrupted'; $http_code = 400; } } if ($error) { $response->setBody(array('error' => $error, 'error_description' => $error_description)); $response->setStatutCode($http_code); $response->send(); } else { if (!$server->userIsConnected()) { header('location:login.php?next=' . urlencode($_SERVER['REQUEST_URI'])); } $user_id = $_SESSION['user_id']; $code = $server->checkReadyCode($client_id, $user_id); if ($code) { $params = array('code' => $code, 'state' => $state); $url_info = parse_url($redirect_uri); if (empty($url_info['query'])) { $redirect_uri .= '?'; } else { $redirect_uri .= '&';
public function run() { $response = null; list($route_mask, $service_name) = $this->findServiceRoute(); if (null !== $route_mask) { $response = $this->executeServiceRoute($route_mask, $service_name); if (null !== $response) { $response->generation_time = $this->getTimer(); $response->generation_mem = $this->getMemory(); if ($this->application->passport->is_auth()) { $response->setHeader('User access token: ' . $this->application->passport->getSessionToken()); } $response->output($service_name, $route_mask); $this->stop(); } } // Статичная страница /** @var \Service\Pages\Model_Factory $pages_factory */ $pages_factory = $this->service_factory->factoryPages; if (null !== $pages_factory) { $url = $this->request->url->toString(false); $page = $pages_factory->pages->getBySlug($url); if (null !== $page) { $service_name = 'Pages'; $route_mask = new \Service\Pages\Router_Client_Page(); $route_mask->found_variables[\Service\Pages\Model_Pages_Page::FIELD_SLUG] = $url; $response = $this->executeServiceRoute($route_mask, $service_name); if (null !== $response) { $response->generation_time = $this->getTimer(); $response->generation_mem = $this->getMemory(); $response->output($service_name, $route_mask); $this->stop(); } } } // Есть стандартная страница ошибки $this->request->url->path = '/404.html'; list($route_mask, $service_name) = $this->findServiceRoute(); if (null !== $route_mask) { $response = $this->executeServiceRoute($route_mask, $service_name); if (null !== $response) { $response->setStatus(Response::HTTP_404_Not_Found); $response->generation_time = $this->getTimer(); $response->generation_mem = $this->getMemory(); $response->output(); $this->stop(); } } // Нет стандартной страницы ошибки $response = new Response(); $response->setStatus(Response::HTTP_404_Not_Found); $response->setBody('Nothing found'); $response->generation_time = $this->getTimer(); $response->generation_mem = $this->getMemory(); $response->output(); $this->stop(); }
/** * @runInSeparateProcess * @depends testSend */ function testSendLimitedByContentLengthStream() { $response = new Response(200, ['Content-Length' => 19]); $body = fopen('php://memory', 'w'); fwrite($body, 'Ignore this. Send this sentence. Ignore this too.'); rewind($body); fread($body, 13); $response->setBody($body); ob_start(); Sapi::sendResponse($response); $result = ob_get_clean(); header_remove(); $this->assertEquals('Send this sentence.', $result); }