public function load($url, $deep) { if (null !== $this->url) { throw new \RuntimeException("This Loader object already loading an url."); } $url = filter_var($url, FILTER_VALIDATE_URL); if (false === $url) { return false; } $this->url = $url; $this->deep = $deep; $this->request = $this->client->request('GET', $url); $this->request->on('response', array($this, 'onResponse')); $this->request->end(); return true; }
/** * Ends request and dispatch * * @return void */ public function dispatch() { $method = $this->original->getMethod(); $url = $this->server->get('api_url') . $this->getPath(); $headers = Arr::except($this->headers()->all(), ['cookie']); $this->request = $this->createClientRequest($method, $url, $headers); $this->request->end($this->getBufferEnd()); }
/** * Handle process on http request * * @param \React\Http\Request $request * @param \React\Http\Request $response */ public function onHttpRequest(\React\Http\Request $request, $response) { if ($request->getPath() !== "/auth/github/callback") { $response->writeHead(404, ['Content-Type' => 'text/plain']); $response->end("Not Found"); return; } $query = $request->getQuery(); if (!isset($query['state']) || !isset($query['code'])) { $response->writeHead(200, ['Content-Type' => 'text/plain']); $response->end("No Code or State query params found"); return; } //If we don't already have a promise for this state, create one if (!isset($this->promises[$query['state']])) { $deferred = new Deferred(); $this->promises[$query['state']] = $deferred; } $accessToken = $this->getAccessToken($query['code']); if ($accessToken) { $email = $this->getEmails($accessToken)[0]->email; $this->promises[$query['state']]->resolve(["SUCCESS", ["authid" => $email]]); } else { $this->promises[$query['state']]->resolve(["FAILURE"]); } $response->writeHead(200, ['Content-Type' => 'text/html']); $response->end("<script>window.close();</script>"); }