コード例 #1
0
ファイル: Application.php プロジェクト: shinkarenko/espresso
 public function __invoke(Request $request, Response $response)
 {
     $sfRequest = SymfonyRequest::create($request->getPath(), $request->getMethod());
     $sfResponse = $this->handle($sfRequest, HttpKernelInterface::MASTER_REQUEST, true);
     $response->writeHead($sfResponse->getStatusCode(), ['Content-Type' => 'text/html']);
     $response->end($sfResponse->getContent());
 }
コード例 #2
0
ファイル: Application.php プロジェクト: bklein01/espresso
 private function buildSymfonyRequest(Request $request, Response $response)
 {
     $sfRequest = SymfonyRequest::create($request->getPath(), $request->getMethod());
     $sfRequest->attributes->set('react.espresso.request', $request);
     $sfRequest->attributes->set('react.espresso.response', $response);
     return $sfRequest;
 }
コード例 #3
0
ファイル: Request.php プロジェクト: im286er/ent
 /**
  * Set value of ReactRequest
  *
  * @param \React\Http\Request $reactRequest
  */
 public function setReactRequest($reactRequest)
 {
     $this->reactRequest = $reactRequest;
     $this->setUri($reactRequest->getPath());
     $this->getHeaders()->addHeaders($reactRequest->getHeaders());
     $this->setMethod($reactRequest->getMethod());
     $this->setQuery(new Parameters($reactRequest->getQuery()));
 }
コード例 #4
0
ファイル: JsonBodyParser.php プロジェクト: marviktintor/pos-1
 /**
  * @param string  $data
  * @param Request $request
  * @return mixed
  */
 public function parse($data, $request)
 {
     try {
         return $this->serializer->unserialize($data);
     } catch (Exception $exception) {
         throw new InvalidBodyException(sprintf('Could not parse body of request with path %s and method %s', $request->getPath(), $request->getMethod()), 1413214227, $exception);
     }
 }
コード例 #5
0
ファイル: Request.php プロジェクト: onigoetz/reactavel
 private function buildServerBag(ReactRequest $request)
 {
     // TODO :: add a few more informations if needed
     $server = ['REMOTE_ADDR' => $request->getRemoteAddress(), 'SERVER_SOFTWARE' => 'ReactPHP Reactavel', 'SERVER_PROTOCOL' => 'HTTP/1.0', 'SERVER_NAME' => Reactavel::getHost(), 'SERVER_PORT' => Reactavel::getPort(), 'REQUEST_METHOD' => $request->getMethod(), 'REQUEST_TIME_FLOAT' => microtime(true), 'REQUEST_TIME' => floor(microtime(true))];
     foreach ($this->headers as $key => $header) {
         $server['HTTP_' . str_replace('-', '_', strtoupper($key))] = $header[0];
     }
     return $server;
 }
コード例 #6
0
ファイル: Route.php プロジェクト: cinnamonlab/ReactHttp
 public function perform(Request $request, Response $response, $jsonData)
 {
     $httpRequest = new HttpRequest($request, $jsonData);
     $method = $request->getMethod();
     $path = $request->getPath();
     if (array_key_exists($method, $this->controllers)) {
         $controllers = $this->controllers[$method];
         $input_paths = $this->getPaths($path);
         /**
          * @var  RoutePath $pathObject
          */
         $target_controller = null;
         $restParams = array();
         foreach ($controllers as $route_path => $pathObject) {
             $restInput = array();
             $check = $this->checkPaths($pathObject->path, $input_paths, $restInput);
             if (!$check) {
                 continue;
             } else {
                 $target_controller = $pathObject->controller;
                 $restParams = $restInput;
                 break;
             }
         }
         if ($target_controller == null) {
             // not found
             throw new ReactHttpException("URL not found!", 404);
         } else {
             foreach ($restParams as $key => $restParam) {
                 $httpRequest->set($key, $restParam);
             }
             $inputs = array($httpRequest, $response);
             $input_params = array_values($restParams);
             $inputs = array_merge($inputs, $input_params);
             if (is_callable($target_controller)) {
                 call_user_func_array($target_controller, $inputs);
             } else {
                 $function_array = preg_split("/@/", $target_controller);
                 if (!isset($function_array[1])) {
                     throw ReactHttpException::internalError('Routing Error');
                 }
                 $class_name = $function_array[0];
                 $method_name = $function_array[1];
                 //$response = $class_name::$method_name();
                 // Initialization controller object
                 $controller = new $class_name();
                 call_user_func_array(array($controller, $method_name), $inputs);
                 //$response = $controller->$method_name();
             }
         }
     } else {
         // not found
         throw new ReactHttpException("URL not found!", 404);
     }
 }
コード例 #7
0
ファイル: RunCommand.php プロジェクト: erpk/harserver
 public function handleRequest(React\Http\Request $req, React\Http\Response $res)
 {
     $request = Request::create($req->getPath(), $req->getMethod(), $req->getQuery());
     $response = $this->httpKernel->handle($request);
     $headers = array();
     foreach ($response->headers as $k => $v) {
         $headers[$k] = $v[0];
     }
     $res->writeHead($response->getStatusCode(), $headers);
     $res->end($response->getContent());
 }
コード例 #8
0
ファイル: RequestBridge.php プロジェクト: KEIII/react-silex
 /**
  * Extract the server parameters ($_SERVER).
  *
  * @param ReactRequest $request
  *
  * @return array
  */
 private function extractServer(ReactRequest $request)
 {
     $server = ['SERVER_PROTOCOL' => 'HTTP/' . $request->getHttpVersion(), 'REQUEST_METHOD' => $request->getMethod(), 'REQUEST_URI' => $request->getPath(), 'REQUEST_TIME' => time()];
     // headers
     foreach ($request->getHeaders() as $key => $value) {
         $name = mb_strtoupper($key, 'UTF-8');
         $name = str_replace('-', '_', $name);
         $server[$name] = $value;
     }
     return $server;
 }
コード例 #9
0
ファイル: RequestParser.php プロジェクト: marcj/php-pm
 protected function fixHeaderNames(Request $request)
 {
     $headers = $request->getHeaders();
     foreach ($headers as $name => $v) {
         $newName = str_replace(' ', '-', ucwords(strtolower(str_replace('-', ' ', $name))));
         $headers[$newName] = $headers[$name];
     }
     if (isset($headers['Content-Type'])) {
         $headers['Content-Type'] = explode(';', $headers['Content-Type'])[0];
     }
     $request->__construct($request->getMethod(), $request->getUrl(), $request->getQuery(), $request->getHttpVersion(), $headers, $request->getBody());
 }
コード例 #10
0
ファイル: ReactServer.php プロジェクト: gonzalo123/httpserver
 private function handle(React\Http\Request $request, React\Http\Response $response, $requestHandler)
 {
     $sfRequest = Request::create($request->getPath(), $request->getMethod(), $request->getQuery());
     $output = call_user_func_array($requestHandler, [$sfRequest]);
     if ($output instanceof Response) {
         $response->writeHead($output->getStatusCode(), $output->headers->all());
         $response->end($output->getContent());
     } else {
         $response->writeHead(200, array('Content-Type' => 'text/plain'));
         $response->end($output);
     }
 }
コード例 #11
0
ファイル: WampPost.php プロジェクト: nepda/WampPost
 /**
  * @param Request $request
  * @param Response $response
  */
 public function handleRequest(Request $request, Response $response)
 {
     if ($request->getPath() == '/pub' && $request->getMethod() == 'POST') {
         $this->handlePublishHttpPost($request, $response);
     } else {
         if ($request->getPath() == '/call' && $request->getMethod() == 'POST') {
             $this->handleCallHttpRequest($request, $response);
         } else {
             $response->writeHead(404, ['Content-Type' => 'text/plain', 'Connection' => 'close']);
             $response->end("Not found");
         }
     }
 }
コード例 #12
0
ファイル: ReactKernel.php プロジェクト: itscaro/react-bundle
 /**
  * @param Request $request
  * @param string $postData
  * @return SymfonyRequest
  */
 private function buildSfRequest(Request $request, $postData = null)
 {
     if ($postData !== null) {
         parse_str($postData, $postDataArray);
         $parameters = empty($postDataArray) ? [] : $postDataArray;
         $content = empty($postDataArray) ? [] : $postData;
         // TODO Maybe check Content-Type too?
         $sfRequest = SymfonyRequest::create($request->getPath(), $request->getMethod(), $parameters, [], [], [], $content);
     } else {
         $sfRequest = SymfonyRequest::create($request->getPath(), $request->getMethod());
     }
     $requestHeaders = $request->getHeaders();
     if (isset($requestHeaders['Cookie'])) {
         $sfRequest->cookies->replace($this->deserializeCookiesHeader($requestHeaders['Cookie']));
     }
     // $sfRequest->request->replace($parameters);
     $sfRequest->query->replace($request->getQuery());
     $sfRequest->server->set('REQUEST_URI', $request->getPath());
     $sfRequest->server->set('SERVER_NAME', rtrim($requestHeaders['Host'], ':0..9'));
     $sfRequest->headers->replace($request->getHeaders());
     return $sfRequest;
 }
コード例 #13
0
 /**
  * @param Request $request
  * @param array $parameters
  * @return SymfonyRequest
  */
 private function buildSfRequest(Request $request, array $parameters)
 {
     $sfRequest = SymfonyRequest::create($request->getPath(), $request->getMethod());
     $requestHeaders = $request->getHeaders();
     if (isset($requestHeaders['Cookie'])) {
         $sfRequest->cookies->replace($this->deserializeCookiesHeader($requestHeaders['Cookie']));
     }
     $sfRequest->request->replace($parameters);
     $sfRequest->query->replace($request->getQuery());
     $sfRequest->server->set('REQUEST_URI', $request->getPath());
     $sfRequest->server->set('SERVER_NAME', rtrim($requestHeaders['Host'], ':0..9'));
     $sfRequest->headers->replace($request->getHeaders());
     return $sfRequest;
 }
コード例 #14
0
ファイル: ReactWeb.php プロジェクト: vektah/react-web
 public function dispatch(Request $request, Response $response)
 {
     // Todo PSR logging
     if ($this->debug) {
         echo date('r') . ": {$request->getPath()}:{$request->getMethod()}\n";
     }
     if (!isset($this->routes[$request->getMethod()])) {
         $this->completeResponse($response, new PageNotFound());
         return;
     }
     $routes = $this->routes[$request->getMethod()];
     foreach ($routes as $route => $target) {
         if (preg_match("|^{$route}\$|", $request->getPath(), $matches)) {
             foreach ($matches as &$match) {
                 $match = urldecode($match);
             }
             try {
                 $result = call_user_func($target, $matches, $request);
             } catch (\Exception $e) {
                 $this->completeResponse($response, new InternalServerError($e));
                 return;
             }
             if ($result instanceof PromiseInterface) {
                 $result->then(function ($result) use($request, $response) {
                     $this->completeResponse($response, $result);
                 }, function ($reason) use($request, $response) {
                     $this->completeResponse($response, new InternalServerError($reason));
                 });
                 return;
             }
             $this->completeResponse($response, $result);
             return;
         }
     }
     $this->completeResponse($response, new PageNotFound());
 }
コード例 #15
0
ファイル: app.php プロジェクト: melfa/air-telegram-bot
 protected function onRequest(Request $request, Response $response)
 {
     $this->resolver->request = $request;
     $this->resolver->response = $response;
     $responseStatus = 200;
     $responseData = null;
     try {
         $responseData = $this->dispatcher->dispatch($request->getMethod(), $request->getPath());
     } catch (HttpRouteNotFoundException $e) {
         $responseStatus = 404;
         $responseData = 'Page not found. Try harder';
     } catch (HttpMethodNotAllowedException $e) {
         $responseStatus = 405;
         $responseData = 'Method not allowed. Use force';
     }
     $response->writeHead($responseStatus);
     $response->end($responseData);
 }
コード例 #16
0
ファイル: Request.php プロジェクト: mbarquin/reactphp-slim
 /**
  * Creates a new request object from the data of a reactPHP request object
  *
  * @param \React\Http\Request $request ReactPHP native request object
  *
  * @return \Slim\Http\Request
  */
 public static function createFromReactRequest(\React\Http\Request $request)
 {
     $slimHeads = new Headers();
     foreach ($request->getHeaders() as $reactHeadKey => $reactHead) {
         $slimHeads->add($reactHeadKey, $reactHead);
         if ($reactHeadKey === 'Host') {
             $host = explode(':', $reactHead);
             if (count($host) === 1) {
                 $host[1] = '80';
             }
         }
     }
     $slimUri = new Uri('http', $host[0], (int) $host[1], $request->getPath(), $request->getQuery());
     $cookies = [];
     $serverParams = $_SERVER;
     $serverParams['SERVER_PROTOCOL'] = 'HTTP/' . $request->getHttpVersion();
     $slimBody = new RequestBody();
     return new self($request->getMethod(), $slimUri, $slimHeads, $cookies, $serverParams, $slimBody);
 }
コード例 #17
0
ファイル: Server.php プロジェクト: pkerling/rest
 /**
  * Handles the requests
  *
  * @param \React\Http\Request $request   Request to handle
  * @param \React\Http\Response $response Prebuilt response object
  */
 public function serverCallback($request, $response)
 {
     // Currently the PHP server is readonly
     if (!in_array(strtoupper($request->getMethod()), array('GET', 'HEAD'))) {
         $response->writeHead(405, array('Content-type' => 'text/plain'));
         $response->end('Writing is currently not supported');
         return;
     }
     /** @var \Cundd\Rest\Request $restRequest */
     $restRequest = new \Cundd\Rest\Request($request->getMethod(), $this->sanitizePath($request->getPath()));
     $this->setServerGlobals($request);
     /** @var \Bullet\Response $restResponse */
     $restResponse = NULL;
     ob_start();
     $this->app->dispatch($restRequest, $restResponse);
     ob_end_clean();
     $response->writeHead($restResponse->status(), $this->getHeadersFromResponse($restResponse));
     $response->end($restResponse->content());
     unset($restRequest);
     unset($restResponse);
 }
コード例 #18
0
 /**
  * Creates a new request object from the data of a reactPHP request object
  *
  * @param \React\Http\Request $request ReactPHP native request object
  * @param string              $body    Content of received call
  *
  * @return \Slim\Http\Request
  */
 public static function createFromReactRequest(\React\Http\Request $request, $body = '')
 {
     $slimHeads = new Headers();
     $cookies = [];
     $host = ['', 80];
     foreach ($request->getHeaders() as $reactHeadKey => $reactHead) {
         $slimHeads->add($reactHeadKey, $reactHead);
         switch ($reactHeadKey) {
             case 'Host':
                 $host = static::getHost($reactHead);
                 break;
             case 'Cookie':
                 $cookies = Cookies::parseHeader($reactHead);
                 break;
         }
     }
     $slimUri = new Uri('http', $host[0], (int) $host[1], $request->getPath(), $request->getQuery());
     $serverParams = $_SERVER;
     $serverParams['SERVER_PROTOCOL'] = 'HTTP/' . $request->getHttpVersion();
     $slimBody = static::getBody($body);
     return new Request($request->getMethod(), $slimUri, $slimHeads, $cookies, $serverParams, $slimBody);
 }
コード例 #19
0
ファイル: DrupalKernel.php プロジェクト: php-pm/php-pm-drupal
 /**
  * {@inheritdoc}
  */
 protected static function mapRequest(ReactRequest $reactRequest, $content)
 {
     $method = strtoupper($reactRequest->getMethod());
     $headers = $reactRequest->getHeaders();
     $query = $reactRequest->getQuery();
     $post = array();
     $requestIsPostType = in_array($method, array('POST', 'PUT', 'DELETE', 'PATCH'));
     // Parse body?
     if (isset($headers['Content-Type']) && 0 === strpos($headers['Content-Type'], 'application/x-www-form-urlencoded') && $requestIsPostType) {
         parse_str($content, $post);
     }
     $cookies = array();
     if (isset($headers['Cookie'])) {
         $headersCookie = explode(';', $headers['Cookie']);
         foreach ($headersCookie as $cookie) {
             list($name, $value) = explode('=', trim($cookie));
             $cookies[$name] = $value;
         }
     }
     // Add any query string to URI so SymfonyRequest::create() can access it.
     $uri = $reactRequest->getPath() . (empty($query) ? '' : '?' . http_build_query($query));
     // SymfonyRequest::create() expects $parameters to contain either
     // $_GET or $_POST.
     $parameters = $requestIsPostType ? $post : $query;
     $syRequest = SymfonyRequest::create($uri, $method, $parameters, $cookies, array(), array(), $content);
     $syRequest->headers->replace($headers);
     // Set CGI/1.1 (RFC 3875) server vars.
     if (empty($_ENV)) {
         // In some cases with cli, $_ENV isn't set, so get with getenv().
         // @see http://stackoverflow.com/questions/8798294/getenv-vs-env-in-php/21473853#21473853
         // @todo: Make this more efficient to eliminate running per request.
         // Static variable?
         $_ENV['DOCUMENT_ROOT'] = getenv('DOCUMENT_ROOT');
         $_ENV['SCRIPT_NAME'] = getenv('SCRIPT_NAME');
     }
     $serverVars = array_merge($syRequest->server->all(), array('DOCUMENT_ROOT' => $_ENV['DOCUMENT_ROOT'], 'GATEWAY_INTERFACE' => 'CGI/1.1', 'SCRIPT_NAME' => $_ENV['SCRIPT_NAME'], 'SCRIPT_FILENAME' => $_ENV['DOCUMENT_ROOT'] . $_ENV['SCRIPT_NAME']));
     $syRequest->server->replace($serverVars);
     return $syRequest;
 }
コード例 #20
0
ファイル: Processor.php プロジェクト: naroga/foreman
 /**
  * Manages a request, made to the Http server.
  *
  * @param \React\Http\Request $request
  * @param \React\Http\Response $response
  */
 public function manageRequest($request, $response)
 {
     $requestData = [$request->getHeaders()['Host'] . $request->getPath(), $request->getMethod(), array_merge($request->getQuery(), $request->getPost()), [], $request->getFiles(), []];
     $contentType = isset($request->getHeaders()['Content-Type']) ? $request->getHeaders()['Content-Type'] : 'application/x-www-form-urlencoded';
     if (strtolower($contentType) == 'application/x-www-form-urlencoded') {
         $requestData[] = http_build_query($request->getPost());
     } else {
         $requestData[] = $request->getBody();
     }
     //Creates the Symfony Request from the React Request.
     $sRequest = Request::create(...$requestData);
     /** @var Response $sResponse */
     $sResponse = $this->kernel->handle($sRequest);
     $response->writeHead($sResponse->getStatusCode());
     $response->end($sResponse->getContent());
 }
コード例 #21
0
ファイル: Server.php プロジェクト: tsufeki/phpcmplr
 /**
  * Handle request.
  *
  * @param Request  $request
  * @param string   $requestBody
  * @param Response $response
  */
 public function handle(Request $request, $requestBody, Response $response)
 {
     $status = 200;
     $responseBody = '{}';
     try {
         if ($request->getMethod() !== 'POST') {
             throw new HttpException(405);
         }
         if (!array_key_exists($request->getPath(), $this->actions)) {
             throw new HttpException(404);
         }
         $this->logger->info('Request: ' . $request->getPath());
         $responseBody = $this->actions[$request->getPath()]->handleRequest($requestBody, $this->phpcmplr);
     } catch (HttpException $e) {
         $this->logger->notice($e->getMessage(), ['exception' => $e]);
         $status = $e->getStatus();
         $responseBody = json_encode(['error' => $e->getStatus(), 'message' => ResponseCodes::$statusTexts[$e->getStatus()]]);
     } catch (\Exception $e) {
         $this->logger->error($e->getMessage(), ['exception' => $e]);
         $status = 500;
         $responseBody = json_encode(['error' => 500, 'message' => ResponseCodes::$statusTexts[500] . ': ' . $e->getMessage()]);
     } catch (\Error $e) {
         // PHP7
         $this->logger->error($e->getMessage(), ['exception' => $e]);
         $status = 500;
         $responseBody = json_encode(['error' => 500, 'message' => ResponseCodes::$statusTexts[500] . ': ' . $e->getMessage()]);
     }
     $response->writeHead($status, ['Content-Type' => 'application/json', 'Content-Length' => strlen($responseBody)]);
     $response->end($responseBody);
 }
コード例 #22
0
 private function buildSymfonyRequest(Request $request, $requestData = '')
 {
     $params = $this->extractRequestParameters($requestData);
     return SymfonyRequest::create($request->getPath(), $request->getMethod(), $params);
 }
コード例 #23
0
ファイル: HttpRequest.php プロジェクト: cinnamonlab/ReactHttp
 public function getMethod()
 {
     return $this->request->getMethod();
 }
コード例 #24
0
 protected function handleRequest(\React\Http\Request $request, \React\Http\Response $response)
 {
     $request_headers = $request->getHeaders();
     $requestUri = $this->getRequestUri($request_headers, $request->getPath());
     $laravel_request = \Request::create($this->getRequestUri($request_headers, $request->getPath()), $request->getMethod(), array_merge($request->getQuery(), $this->post_params), $this->getCookies($request_headers), [], [], $this->request_body);
     $laravel_request->headers->add($request_headers);
     $laravel_response = \App::handle($laravel_request);
     $headers = array_merge($laravel_response->headers->allPreserveCase(), $this->buildCookies($laravel_response->headers->getCookies()));
     $response->writeHead($laravel_response->getStatusCode(), $headers);
     $response->end($laravel_response->getContent());
     echo $requestUri . "\n";
 }
コード例 #25
0
ファイル: Server.php プロジェクト: tritumRz/rest
 /**
  * Handles the requests
  *
  * @param \React\Http\Request $request Request to handle
  * @param \React\Http\Response $response Prebuilt response object
  */
 public function serverCallback($request, $response)
 {
     // Currently the PHP server is readonly
     if (!in_array(strtoupper($request->getMethod()), array('GET', 'HEAD'))) {
         $response->writeHead(405, array('Content-type' => 'text/plain'));
         $response->end('Writing is currently not supported');
         return;
     }
     $requestPath = $this->sanitizePath($request->getPath());
     $requestPath = substr($requestPath, 5);
     /** @var Request $restRequest */
     $restRequest = new Request($request->getMethod(), $requestPath, $request->getQuery(), $request->getHeaders());
     $path = '' . strtok($requestPath, '/');
     $restRequest->initWithPathAndOriginalPath($path, $path);
     $this->setServerGlobals($request);
     /** @var \Bullet\Response $restResponse */
     $restResponse = NULL;
     ob_start();
     $this->dispatcher->dispatch($restRequest, $restResponse);
     $responseString = ob_get_clean();
     if (!$restResponse) {
         $response->writeHead(200);
         $response->end($responseString);
     } else {
         $response->writeHead($restResponse->status(), $this->getHeadersFromResponse($restResponse));
         $response->end($restResponse->content());
     }
     unset($restRequest);
     unset($restResponse);
 }
コード例 #26
0
 /**
  * Convert React\Http\Request to Symfony\Component\HttpFoundation\Request
  *
  * @param ReactRequest $reactRequest
  * @return SymfonyRequest $syRequest
  */
 protected static function mapRequest(ReactRequest $reactRequest, $content)
 {
     $method = $reactRequest->getMethod();
     $headers = $reactRequest->getHeaders();
     $query = $reactRequest->getQuery();
     $post = array();
     // parse body?
     if (isset($headers['Content-Type']) && 0 === strpos($headers['Content-Type'], 'application/x-www-form-urlencoded') && in_array(strtoupper($method), array('POST', 'PUT', 'DELETE', 'PATCH'))) {
         parse_str($content, $post);
     }
     $syRequest = new SymfonyRequest($query, $post, array(), array(), array(), array(), $content);
     $syRequest->setMethod($method);
     $syRequest->headers->replace($headers);
     $syRequest->server->set('REQUEST_URI', $reactRequest->getPath());
     $syRequest->server->set('SERVER_NAME', explode(':', $headers['Host'])[0]);
     return $syRequest;
 }
コード例 #27
0
 /**
  * @param React\Http\Request $reactRequest
  * @return Nette\Http\Request
  */
 private function createNetteHttpRequest(React\Http\Request $reactRequest)
 {
     $url = new Nette\Http\UrlScript('http://' . $reactRequest->getHeaders()['Host'] . $reactRequest->getPath());
     $url->setQuery($reactRequest->getQuery());
     return new Nette\Http\Request($url, NULL, NULL, NULL, NULL, $reactRequest->getHeaders(), $reactRequest->getMethod(), $reactRequest->remoteAddress, NULL, NULL);
 }
コード例 #28
0
ファイル: HttpServer.php プロジェクト: georgjaehnig/sculpin
 /**
  * Log a request
  *
  * @param OutputInterface $output       Output
  * @param string          $responseCode Response code
  * @param Request         $request      Request
  */
 public static function logRequest(OutputInterface $output, $responseCode, Request $request)
 {
     $wrapOpen = '';
     $wrapClose = '';
     if ($responseCode < 400) {
         $wrapOpen = '';
         $wrapClose = '';
     } elseif ($responseCode >= 400) {
         $wrapOpen = '<comment>';
         $wrapClose = '</comment>';
     }
     $output->writeln($wrapOpen . sprintf('[%s] "%s %s HTTP/%s" %s', date("d/M/Y H:i:s"), $request->getMethod(), $request->getPath(), $request->getHttpVersion(), $responseCode) . $wrapClose);
 }
コード例 #29
0
 private function buildSymfonyRequest(Request $request, Response $response)
 {
     return SymfonyRequest::create($request->getPath(), $request->getMethod());
 }
コード例 #30
0
ファイル: Application.php プロジェクト: unclead/php-cluster
 public function handleRequest(Request $request, Response $response)
 {
     $this->request = $request;
     $this->response = $response;
     $dispatcher = new Dispatcher($this->router->getData());
     try {
         $content = $dispatcher->dispatch($request->getMethod(), $request->getPath());
         $response->writeHead(200, ['Content-Type' => $this->responseContentType]);
         $response->write($content);
     } catch (HttpRouteNotFoundException $e) {
         $response->writeHead(404, ['Content-Type' => 'text/plain']);
     } catch (HttpMethodNotAllowedException $e) {
         $response->writeHead(403, ['Content-Type' => 'text/plain']);
     } catch (Exception $e) {
         $this->getLogger()->error($e->getMessage());
         $response->writeHead(500, ['Content-Type' => 'text/plain']);
     }
     $response->end();
 }