diff --git a/Services/FullContact.php b/Services/FullContact.php index f7be1f7..8159a97 100644 --- a/Services/FullContact.php +++ b/Services/FullContact.php @@ -60,36 +60,21 @@ public function __construct($api_key) $this->_apiKey = $api_key; } - /** - * This sets the webhook url for all requests made for this service - * instance. To unset, just use setWebhookUrl(null). - * - * @author David Boskovic @dboskovic - * @param string $url - * @param string $id - * @return object - */ - public function setWebhookUrl($url, $id = null) { - $this->_webhookUrl = $url; - $this->_webhookId = $id; - return $this; - } - /** * This is a pretty close copy of my work on the Contactually PHP library * available here: http://github.com/caseysoftware/contactually-php * * @author Keith Casey - * @author David Boskovic @dboskovic * @param array $params * @return object * @throws Services_FullContact_Exception_NotImplemented */ + protected function _execute($params = array()) { if(!in_array($params['method'], $this->_supportedMethods)){ throw new Services_FullContact_Exception_NotImplemented(__CLASS__ . - " does not support the [" . $params['method'] . "] method"); + " does not support the [" . $params['method'] . "] method"); } $params['apiKey'] = $this->_apiKey; @@ -97,23 +82,36 @@ protected function _execute($params = array()) if($this->_webhookUrl) { $params['webhookUrl'] = $this->_webhookUrl; } - if($this->_webhookId) { $params['webhookId'] = $this->_webhookId; } + $fullUrl = $this->_baseUri . $this->_version . $this->_resourceUri . - '?' . http_build_query($params); + '?' . http_build_query($params); //open connection $connection = curl_init($fullUrl); curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1); curl_setopt($connection, CURLOPT_USERAGENT, self::USER_AGENT); + curl_setopt($connection, CURLOPT_HEADER, 1); //execute request $this->response_json = curl_exec($connection); $this->response_code = curl_getinfo($connection, CURLINFO_HTTP_CODE); - $this->response_obj = json_decode($this->response_json); + + preg_match_all('/X-Rate-Limit-.{0,}/',$this->response_json, $out, PREG_PATTERN_ORDER); + preg_match("/\d{1,}/",$out[0][0],$limit); + preg_match("/\d{1,}/",$out[0][1],$remaining); + preg_match("/\d{1,}/",$out[0][2],$reset); + + $pos = strpos($this->response_json, '{'); + $response = substr($this->response_json, $pos); + + $this->response_obj = json_decode($response); + $this->response_obj->limit = $limit[0]; + $this->response_obj->remaining_calls = $remaining[0]; + $this->response_obj->remaining_seconds = $reset[0]; if ('403' == $this->response_code) { throw new Services_FullContact_Exception_NoCredit($this->response_obj->message); @@ -121,4 +119,6 @@ protected function _execute($params = array()) return $this->response_obj; } + + } \ No newline at end of file