/** * @param GAQuery $pQuery * @return array */ public function retrieveData(GAQuery $pQuery) { if (!$this->isAuth()) { return null; } $r = new Request($pQuery->get()); $header[] = 'Authorization: GoogleLogin auth=' . $this->getAuth(); $r->setOption(CURLOPT_SSL_VERIFYPEER, 0); $r->setOption(CURLOPT_HTTPHEADER, $header); $r->setOption(CURLOPT_HEADER, false); return SimpleJSON::decode($r->execute()); }
/** * Méthode de demande d'authentication pour le service google souhaité * @return void */ private function login() { $r = new Request(self::URL_LOGIN); $r->setOption(CURLOPT_FOLLOWLOCATION, true); $r->setOption(CURLOPT_SSL_VERIFYPEER, 0); $data = array('accountType' => $this->account_type, 'Email' => $this->email, 'Passwd' => $this->password, 'source' => self::SOURCE, 'service' => $this->service); $r->setDataPost($data); $retour = $r->execute(); $retour = preg_replace("/(\n|\r)/", "", $retour); $toParse = array("Auth", "LSID", "SID"); foreach ($toParse as $var) { if (preg_match("/" . $var . "=(.*)\$/", $retour, $extract, PREG_OFFSET_CAPTURE)) { try { $this->{$var} = $extract[1][0]; $retour = preg_replace("/" . $var . "=.*\$/", "", $retour); } catch (Exception $e) { return; } } else { return; } } }
/** * Exécute un ensemble de requête GET via les méthodes curl_multi_* * @param string[] $pUrlArr * @return array */ public static function multiLoad($pUrlArr) { $requests = array(); foreach ($pUrlArr as $url) { /** @var Request $r */ $r = new Request($url); $r->setOption(CURLOPT_RETURNTRANSFER, 1); $requests[] = $r; } $mh = curl_multi_init(); foreach ($requests as $r) { curl_multi_add_handle($mh, $r->getResource()); } $active = null; //execute the handles do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active && $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } $return = array(); foreach ($requests as $r) { $return[] = curl_multi_getcontent($r->getResource()); } foreach ($requests as $r) { curl_multi_remove_handle($mh, $r->getResource()); } curl_multi_close($mh); return $return; }