Exemplo n.º 1
3
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     if (!$request instanceof Request) {
         $request = Request::createFromBase($request);
     }
     $response = $next($request);
     if (!is_null($this->esi)) {
         $this->esi->addSurrogateControl($response);
     }
     return $response;
 }
Exemplo n.º 2
2
 protected function createRequest($method = 'GET')
 {
     $request = LaravelRequest::createFromBase(LaravelRequest::create('/', 'GET'));
     if ($method !== null) {
         $request->headers->set('Access-Control-Request-Method', $method);
     }
     return new Request($request);
 }
Exemplo n.º 3
2
 /**
  * Initialize the Laravel framework.
  * @param SymfonyRequest $request
  */
 private function initialize($request = null)
 {
     // Store a reference to the database object
     // so the database connection can be reused during tests
     $this->oldDb = null;
     if ($this->app['db'] && $this->app['db']->connection()) {
         $this->oldDb = $this->app['db'];
     }
     // The module can login a user with the $I->amLoggedAs() method,
     // but this is not persisted between requests. Store a reference
     // to the logged in user to simulate this.
     $loggedInUser = null;
     if ($this->app['auth'] && $this->app['auth']->check()) {
         $loggedInUser = $this->app['auth']->user();
     }
     // Load the application object
     $this->app = $this->kernel = $this->loadApplication();
     // Set the request instance for the application
     if (is_null($request)) {
         $appConfig = (require $this->module->config['project_dir'] . 'config/app.php');
         $request = SymfonyRequest::create($appConfig['url']);
     }
     $this->app->instance('request', Request::createFromBase($request));
     $this->app->instance('middleware.disable', $this->module->config['disable_middleware']);
     // Reset the old database after the DatabaseServiceProvider ran.
     // This way other service providers that rely on the $app['db'] entry
     // have the correct instance available.
     if ($this->oldDb) {
         $this->app['events']->listen('Illuminate\\Database\\DatabaseServiceProvider', function () {
             $this->app->singleton('db', function () {
                 return $this->oldDb;
             });
         });
     }
     $this->app->make('Illuminate\\Contracts\\Http\\Kernel')->bootstrap();
     // If events should be disabled mock the event dispatcher instance
     if ($this->module->config['disable_events']) {
         $this->mockEventDispatcher();
     }
     // Setup an event listener to listen for all events that are triggered
     $this->setupEventListener();
     // If there was a user logged in restore this user.
     // Also reload the user object from the user provider to prevent stale user data.
     if ($loggedInUser) {
         $refreshed = $this->app['auth']->getProvider()->retrieveById($loggedInUser->getAuthIdentifier());
         $this->app['auth']->setUser($refreshed ?: $loggedInUser);
     }
     $this->module->setApplication($this->app);
 }
Exemplo n.º 4
2
 /**
  * Initialize the Laravel framework.
  * @param SymfonyRequest $request
  */
 private function initialize($request = null)
 {
     // Store a reference to the database object
     // so the database connection can be reused during tests
     $oldDb = null;
     if ($this->app['db'] && $this->app['db']->connection()) {
         $oldDb = $this->app['db'];
     }
     // The module can login a user with the $I->amLoggedAs() method,
     // but this is not persisted between requests. Store a reference
     // to the logged in user to simulate this.
     $loggedInUser = null;
     if ($this->app['auth'] && $this->app['auth']->check()) {
         $loggedInUser = $this->app['auth']->user();
     }
     // Load the application object
     $this->app = $this->kernel = $this->loadApplication();
     // Set the request instance for the application
     if (is_null($request)) {
         $appConfig = (require $this->module->config['project_dir'] . 'config/app.php');
         $request = SymfonyRequest::create($appConfig['url']);
     }
     $this->app->instance('request', Request::createFromBase($request));
     $this->app->instance('middleware.disable', $this->module->config['disable_middleware']);
     // Bootstrap the application
     $this->app->make('Illuminate\\Contracts\\Http\\Kernel')->bootstrap();
     // Restore the old database object if available
     if ($oldDb) {
         $this->app['db'] = $oldDb;
         Model::setConnectionResolver($this->app['db']);
     }
     // If there was a user logged in restore this user.
     // Also reload the user object from the user provider to prevent stale user data.
     if ($loggedInUser) {
         $refreshed = $this->app['auth']->getProvider()->retrieveById($loggedInUser->getAuthIdentifier());
         $this->app['auth']->setUser($refreshed ?: $loggedInUser);
     }
     $this->module->setApplication($this->app);
 }
Exemplo n.º 5
1
 /**
  * Initialize the Laravel framework.
  */
 private function initialize()
 {
     // Store a reference to the database object
     // so the database connection can be reused during tests
     $oldDb = null;
     if ($this->app['db'] && $this->app['db']->connection()) {
         $oldDb = $this->app['db'];
     }
     // The module can login a user with the $I->amLoggedAs() method,
     // but this is not persisted between requests. Store a reference
     // to the logged in user to simulate this.
     $loggedInUser = null;
     if ($this->app['auth'] && $this->app['auth']->check()) {
         $loggedInUser = $this->app['auth']->user();
     }
     $this->app = $this->kernel = $this->loadApplication();
     $this->app->make('Illuminate\\Contracts\\Http\\Kernel')->bootstrap();
     // Set the base url for the Request object
     $url = $this->app['config']->get('app.url', 'http://localhost');
     $this->app->instance('request', Request::createFromBase(SymfonyRequest::create($url)));
     if ($oldDb) {
         $this->app['db'] = $oldDb;
         Model::setConnectionResolver($this->app['db']);
     }
     // If there was a user logged in restore this user.
     // Also reload the user object from the user provider to prevent stale user data.
     if ($loggedInUser) {
         $refreshed = $this->app['auth']->getProvider()->retrieveById($loggedInUser->getAuthIdentifier());
         $this->app['auth']->setUser($refreshed ?: $loggedInUser);
     }
     $this->module->setApplication($this->app);
 }
Exemplo n.º 6
1
 protected function createRequest($origin = null)
 {
     $request = LaravelRequest::createFromBase(LaravelRequest::create('/', 'GET'));
     if ($origin !== null) {
         $request->headers->set('Origin', $origin);
     }
     return new Request($request);
 }
Exemplo n.º 7
1
 /**
  * @return \Illuminate\Http\Response
  */
 public function run()
 {
     $request = Request::createFromBase(Request::createFromGlobals());
     return $this->handle($request);
 }
Exemplo n.º 8
0
 protected function createRequest($headers = ['X-Test'])
 {
     $request = LaravelRequest::createFromBase(LaravelRequest::create('/', 'GET'));
     if ($headers !== null) {
         $request->headers->set('Access-Control-Request-Headers', implode(', ', $headers));
     }
     return new Request($request);
 }
Exemplo n.º 9
0
 /**
  * Handle a request.
  *
  * @param SymfonyRequest $request
  * @param int $type
  * @param bool $catch
  * @return Response
  */
 public function handle(SymfonyRequest $request, $type = self::MASTER_REQUEST, $catch = true)
 {
     $this->app['request'] = $request = Request::createFromBase($request);
     $response = $this->app->handle($request);
     $method = new \ReflectionMethod(get_class($this->app), 'callTerminableMiddleware');
     $method->setAccessible(true);
     $method->invoke($this->app, $response);
     return $response;
 }
Exemplo n.º 10
0
 /**
  * Return a UrlGenerator object 
  *
  * @return \Illuminate\Routing\UrlGenerator
  */
 public function url()
 {
     $routes = new \Illuminate\Routing\RouteCollection();
     $context = \Illuminate\Http\Request::createFromBase(\Illuminate\Http\Request::capture());
     return new \Illuminate\Routing\UrlGenerator($routes, $context);
 }
Exemplo n.º 11
0
 /**
  * Terminates a request/response cycle.
  *
  * @param SyfmonyRequest $request A Request instance
  * @param Response $response A Response instance
  *
  * @api
  */
 public function terminate(SyfmonyRequest $request, Response $response)
 {
     $this->httpKernel->terminate(Request::createFromBase($request), $response);
 }
Exemplo n.º 12
0
 /**
  * Build an \Illuminate\Http\Request object
  *
  * @param string $verb
  * @param \Ratchet\ConnectionInterface $connection
  * @param \Rathcet\Wamp\Topic $topic
  * @param array $data
  * @return \Illuminate\Http\Request
  */
 protected function buildRequest($verb, Connection $connection, $topic, $data = [], $params = null)
 {
     $uri = ['protocol' => 'ws://', 'host' => $connection->WebSocket->request->getHost(), 'port' => ':' . config('twostream.websocket.port'), 'path' => '/' . trim($topic->getId(), '/') . (isset($params) ? '/' . implode('/', $params) : '')];
     $cookies = $connection->WebSocket->request->getCookies();
     array_forget($cookies, config('session.cookie'));
     // Make sure the normal Session Facade does not contain the client's Session.
     return Request::createFromBase(SymfonyRequest::create(implode($uri), strtoupper($verb), ['data' => $data], $cookies, [], [], null));
 }
Exemplo n.º 13
0
 protected function makeJsonRequest($request, $content)
 {
     $newRequest = SymphonyRequest::create($request->getUri(), $request->getMethod(), [], $request->cookie(), [], $this->transformHeadersToServerVars($request->headers->all()), $content);
     return Request::createFromBase($newRequest);
 }
Exemplo n.º 14
0
 private function dealWithRequest($request)
 {
     $get = isset($request->get) ? $request->get : array();
     $post = isset($request->post) ? $request->post : array();
     $cookie = isset($request->cookie) ? $request->cookie : array();
     $server = isset($request->server) ? $request->server : array();
     $header = isset($request->header) ? $request->header : array();
     // #4 swoole 1.7.19 will no longer do urlencode on cookies by denghongcai
     if (strnatcasecmp(SWOOLE_VERSION, '1.7.19') < 0) {
         // #2 laravel结合swoole每次刷新session都会变的问题 by cong8341
         // 注:由于swoole对cookie中的特殊字符(=等)做了urlencode,导致laravel的encrypter
         //     在下次请求时接受到的payload与上一个请求响应时发出的不一致,最终导致每次请求
         //     都解出不一样的laravel_session
         foreach ($cookie as $key => $value) {
             $cookie[$key] = urldecode($value);
         }
     }
     // #5 增强与Laravel的兼容,处理特殊请求体 by denghongcai
     // swoole中header并没有包含于$request->server中,需要合并
     foreach ($header as $key => $value) {
         $header['http_' . $key] = $value;
         unset($header[$key]);
     }
     $server = array_merge($server, $header);
     // 在swoole环境下$_SERVER的所有key都为小写,需要把它们转化为大写
     foreach ($server as $key => $value) {
         $server[strtoupper($key)] = $value;
         unset($server[$key]);
     }
     // #5 增强与Laravel的兼容,处理特殊请求体 by denghongcai
     // 对于Content-Type为非application/x-www-form-urlencoded的请求体需要给
     // SymfonyRequest传入原始的Body
     $content = $request->rawContent();
     $content = empty($content) ? null : $content;
     // 创建illuminate_request
     $illuminate_request = IlluminateRequest::createFromBase(new SymfonyRequest($get, $post, array(), $cookie, array(), $server, $content));
     return $illuminate_request;
 }
Exemplo n.º 15
0
 /**
  * Call the given URI and return the Response.
  *
  * @param  string  $method
  * @param  string  $uri
  * @param  array  $parameters
  * @param  array  $cookies
  * @param  array  $files
  * @param  array  $server
  * @param  string  $content
  * @return \Illuminate\Http\Response
  */
 public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
 {
     $kernel = $this->app->make(HttpKernel::class);
     $files = array_merge($files, $this->extractFilesFromDataArray($parameters));
     $symfonyRequest = SymfonyRequest::create($this->prepareUrlForRequest($uri), $method, $parameters, $cookies, $files, array_replace($this->serverVariables, $server), $content);
     $response = $kernel->handle($request = Request::createFromBase($symfonyRequest));
     $kernel->terminate($request, $response);
     return $this->createTestResponse($response);
 }
Exemplo n.º 16
0
 /**
  * Initialize the Laravel framework.
  *
  * @param SymfonyRequest $request
  */
 private function initialize($request = null)
 {
     // Store a reference to the database object
     // so the database connection can be reused during tests
     $this->oldDb = null;
     if ($this->app['db'] && $this->app['db']->connection()) {
         $this->oldDb = $this->app['db'];
     }
     $this->app = $this->kernel = $this->loadApplication();
     // Set the request instance for the application,
     if (is_null($request)) {
         $appConfig = (require $this->module->config['project_dir'] . 'config/app.php');
         $request = SymfonyRequest::create($appConfig['url']);
     }
     $this->app->instance('request', Request::createFromBase($request));
     // Reset the old database after the DatabaseServiceProvider ran.
     // This way other service providers that rely on the $app['db'] entry
     // have the correct instance available.
     if ($this->oldDb) {
         $this->app['events']->listen('Illuminate\\Database\\DatabaseServiceProvider', function () {
             $this->app->singleton('db', function () {
                 return $this->oldDb;
             });
         });
     }
     $this->app->make('Illuminate\\Contracts\\Http\\Kernel')->bootstrap();
     // Record all triggered events by adding a wildcard event listener
     $this->app['events']->listen('*', function () {
         $this->triggeredEvents[] = $this->normalizeEvent($this->app['events']->firing());
     });
     if ($this->module->config['disable_middleware'] || $this->middlewareDisabled) {
         $this->app->instance('middleware.disable', true);
     }
     if ($this->module->config['disable_events'] || $this->eventsDisabled) {
         $this->mockEventDispatcher();
     }
     $this->module->setApplication($this->app);
 }
Exemplo n.º 17
0
 /**
  * Create an Illuminate request from a Symfony instance.
  *
  * @param SymfonyRequest $request request instance
  * @return \Xpressengine\Http\Request
  */
 public static function createFromBase(SymfonyRequest $request)
 {
     $request = parent::createFromBase($request);
     $request->originInputSource = new ParameterBag($request->all());
     return $request;
 }
Exemplo n.º 18
0
 /**
  * Create an Illuminate request from a Symfony instance.
  *
  * @param \Symfony\Component\HttpFoundation\Request $request
  * @return \Illuminate\Http\Request 
  * @static 
  */
 public static function createFromBase($request)
 {
     return \Illuminate\Http\Request::createFromBase($request);
 }
 private function performLocalRequest(Request $parentRequest = null, $url, $method, $data, &$statusCode = null)
 {
     $urlInfo = parse_url($url);
     if (array_key_exists('query', $urlInfo) == true && mb_strlen($urlInfo['query']) > 0) {
         mb_parse_str($urlInfo['query'], $_GET);
     }
     // create the request object
     $cookies = $parentRequest ? $parentRequest->cookies->all() : [];
     $server = $parentRequest ? $parentRequest->server->all() : [];
     $request = Request::createFromBase(SymfonyRequest::create($url, $method, [], $cookies, [], $server, json_encode($data)));
     $request->headers->set('Content-Type', 'application/json');
     if ($parentRequest !== null) {
         $locale = $parentRequest->getLocale();
         $request->setSession($parentRequest->getSession());
         $request->setLocale($locale);
         $request->headers->set('Accept-Language', [$locale]);
     }
     // execute the request
     // TODO: handle errors gracefully
     $kernel = $GLOBALS['kernel'];
     //$this->app->make(\Illuminate\Contracts\Http\Kernel::class);
     $response = $kernel->handle($request, HttpKernelInterface::SUB_REQUEST);
     $statusCode = $response->getStatusCode();
     $content = $response->getContent();
     return $content;
 }
Exemplo n.º 20
0
 /**
  * Call the given URI and return the Response.
  *
  * @param  string  $method
  * @param  string  $uri
  * @param  array   $parameters
  * @param  array   $cookies
  * @param  array   $files
  * @param  array   $server
  * @param  string  $content
  * @return \Illuminate\Http\Response
  */
 public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
 {
     $kernel = $this->app->make('Illuminate\\Contracts\\Http\\Kernel');
     $this->currentUri = $this->prepareUrlForRequest($uri);
     $this->resetPageContext();
     $symfonyRequest = SymfonyRequest::create($this->currentUri, $method, $parameters, $cookies, $this->filterFiles($files), array_replace($this->serverVariables, $server), $content);
     $request = Request::createFromBase($symfonyRequest);
     $response = $kernel->handle($request);
     $kernel->terminate($request, $response);
     return $this->response = $response;
 }
Exemplo n.º 21
0
 /**
  * {@inheritdoc}
  */
 public function handle(SymfonyRequest $request, $type = self::MASTER_REQUEST, $catch = true)
 {
     return $this['Illuminate\\Contracts\\Http\\Kernel']->handle(Request::createFromBase($request));
 }
Exemplo n.º 22
0
 /**
  * Get the response for a given request.
  *
  * @param  \Symfony\Component\HttpFoundation\Request  $request
  * @param  int   $type
  * @param  bool  $catch
  * @return \Illuminate\Http\Response
  */
 public function handle(SymfonyRequest $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
 {
     return $this->dispatch(Request::createFromBase($request));
 }
Exemplo n.º 23
0
 /**
  * Handle the given request and get the response.
  *
  * Provides compatibility with BrowserKit functional testing.
  *
  * @implements HttpKernelInterface::handle
  *
  * @param  \Symfony\Component\HttpFoundation\Request  $request
  * @param  int   $type
  * @param  bool  $catch
  * @return \Symfony\Component\HttpFoundation\Response
  *
  * @throws \Exception
  */
 public function handle(SymfonyRequest $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
 {
     try {
         $this->refreshRequest($request = Request::createFromBase($request));
         $this->boot();
         return $this->dispatch($request);
     } catch (\Exception $e) {
         if ($this->runningUnitTests()) {
             throw $e;
         }
         return $this['exception']->handleException($e);
     }
 }
Exemplo n.º 24
0
 protected function createRequest($host = 'localhost')
 {
     $request = LaravelRequest::createFromBase(LaravelRequest::create('/', 'GET', [], [], [], ['HTTP_HOST' => $host]));
     return new Request($request);
 }
Exemplo n.º 25
-1
 /**
  * Handle a request.
  *
  * @param DomRequest $request
  * @param int $type
  * @param bool $catch
  * @return Response
  */
 public function handle(DomRequest $request, $type = self::MASTER_REQUEST, $catch = true)
 {
     $request = Request::createFromBase($request);
     $request->enableHttpMethodParameterOverride();
     $this->app->bind('request', $request);
     return $this->httpKernel->handle($request);
 }
Exemplo n.º 26
-1
 public function onRequest($request, $response)
 {
     // global vars used by: Symfony\Component\HttpFoundation\Request::createFromGlobals()
     // this static method is alse used by Illuminate\Auth\Guard
     $this->setGlobal($request);
     // according to : Illuminate\Http\Request::capture
     // static::enableHttpMethodParameterOverride(); // this line moved to $this->bootstrap() :
     $laravel_request = \Illuminate\Http\Request::createFromBase(\Symfony\Component\HttpFoundation\Request::createFromGlobals());
     // see: Illuminate\Foundation\Http\Kernel::handle($request)
     $laravel_response = $this->kernel->handle($laravel_request);
     //  sometimes there are errors saying 'http_onReceive: connection[...] is closed' and this type of error make worker restart
     if (!$this->swoole_http_server->exist($response->fd)) {
         return;
     }
     foreach ($laravel_response->headers->allPreserveCase() as $name => $values) {
         foreach ($values as $value) {
             $response->header($name, $value);
         }
     }
     foreach ($laravel_response->headers->getCookies() as $cookie) {
         $response->cookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly());
     }
     // I think " $l_response->send()" is enough
     // $response->status($l_response->getStatusCode());
     // gzip use nginx
     // $response->gzip(1);
     ob_start();
     // $laravel_response->send() contains setting header and cookie ,and $response->header and $response->cookie do same jobs.
     // They are all necessary , according by my test
     $laravel_response->send();
     $response->end(ob_get_clean());
     $this->kernel->terminate($laravel_request, $laravel_response);
     $this->app->restoreAfterRequest();
 }
Exemplo n.º 27
-1
 /**
  * Given a request object, find the matching route
  *
  * @param Request $request
  * @return \Illuminate\Routing\Route
  */
 public function matchRequest(SymfonyRequest $request)
 {
     $laravelRequest = LaravelRequest::createFromBase($request);
     $route = $this->findRoute($laravelRequest);
     $route->setParameter('_module', $this->moduleName);
     return $route;
 }
Exemplo n.º 28
-1
 public function onRequest($request, $response)
 {
     //[备注]由于laravel_kernel接受illuminate_request并返回illuminate_response,所以该方法针对swoole的请求和响应进行兼容处理
     //兼容Swoole的请求对象
     $get = isset($request->get) ? $request->get : array();
     $post = isset($request->post) ? $request->post : array();
     $cookie = isset($request->cookie) ? $request->cookie : array();
     $server = isset($request->server) ? $request->server : array();
     foreach ($server as $key => $value) {
         $server[strtoupper($key)] = $value;
         unset($server[$key]);
     }
     //创建illuminate_request
     $illuminate_request = IlluminateRequest::createFromBase(new SymfonyRequest($get, $post, array(), $cookie, array(), $server));
     //把illuminate_request传入laravel_kernel后,取回illuminate_response
     $illuminate_response = $this->laravel_kernel->handle($illuminate_request);
     //兼容Swoole的响应对象
     // status
     $response->status($illuminate_response->getStatusCode());
     // headers
     foreach ($illuminate_response->headers->allPreserveCase() as $name => $values) {
         foreach ($values as $value) {
             $response->header($name, $value);
         }
     }
     // cookies
     foreach ($illuminate_response->headers->getCookies() as $cookie) {
         $response->cookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly());
     }
     // content
     $content = $illuminate_response->getContent();
     // send content & close
     $response->end($content);
     //结束请求生命周期(依次调用内核中所有middleware的teminate)
     $this->laravel_kernel->terminate($illuminate_request, $illuminate_response);
 }