示例#1
0
 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;
 }
示例#2
0
 /**
  * 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>");
 }