protected function _makeCall($function, $auth = false, $params = null, $method = 'GET')
    {
        if (!$auth) {
            // if the call doesn't requires authentication
            $authMethod = '?client_id=' . $this->getApiKey();
        } else {
            // if the call needs an authenticated user
            if (!isset($this->_accesstoken)) {
                throw new InstagramException("Error: _makeCall() | $function - This method requires an authenticated users access token.");
            }

            $authMethod = '?access_token=' . $this->getAccessToken();
        }

        $paramString = null;

        if (isset($params) && is_array($params)) {
            $paramString = '&' . http_build_query($params);
        }

        $apiCall = self::API_URL . $function . $authMethod . (('GET' === $method) ? $paramString : null);

        // we want JSON
        $headerData = array('Accept: application/json');

        if ($this->_signedheader) {
            $apiCall .= (strstr($apiCall, '?') ? '&' : '?') . 'sig=' . $this->_signHeader($function, $authMethod, $params);
        }

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $apiCall);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headerData);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
        curl_setopt($ch, CURLOPT_TIMEOUT, 90);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_HEADER, true);

        switch ($method) {
            case 'POST':
                curl_setopt($ch, CURLOPT_POST, count($params));
                curl_setopt($ch, CURLOPT_POSTFIELDS, ltrim($paramString, '&'));
                break;
            case 'DELETE':
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
                break;
        }

        $jsonData = curl_exec($ch);
        // split header from JSON data
        // and assign each to a variable
        list($headerContent, $jsonData) = explode("\r\n\r\n", $jsonData, 2);

        // convert header content into an array
        $headers = $this->processHeaders($headerContent);

        // get the 'X-Ratelimit-Remaining' header value
        $this->_xRateLimitRemaining = $headers['X-Ratelimit-Remaining'];

        if (!$jsonData) {
            throw new InstagramException('Error: _makeCall() - cURL error: ' . curl_error($ch));
        }

        curl_close($ch);

        return json_decode($jsonData);
    }
protected function _makeCall($function, $auth = false, $params = null, $method = 'GET')
    {
        if (!$auth) {
            // if the call doesn't requires authentication
            $authMethod = '?client_id=' . $this->getApiKey();
        } else {
            // if the call needs an authenticated user
            if (!isset($this->_accesstoken)) {
                throw new InstagramException("Error: _makeCall() | $function - This method requires an authenticated users access token.");
            }

            $authMethod = '?access_token=' . $this->getAccessToken();
        }

        $paramString = null;

        if (isset($params) && is_array($params)) {
            $paramString = '&' . http_build_query($params);
        }

        $apiCall = self::API_URL . $function . $authMethod . (('GET' === $method) ? $paramString : null);

        // we want JSON
        $headerData = array('Accept: application/json');

        if ($this->_signedheader) {
            $apiCall .= (strstr($apiCall, '?') ? '&' : '?') . 'sig=' . $this->_signHeader($function, $authMethod, $params);
        }

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $apiCall);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headerData);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
        curl_setopt($ch, CURLOPT_TIMEOUT, 90);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_HEADER, true);

        switch ($method) {
            case 'POST':
                curl_setopt($ch, CURLOPT_POST, count($params));
                curl_setopt($ch, CURLOPT_POSTFIELDS, ltrim($paramString, '&'));
                break;
            case 'DELETE':
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
                break;
        }

        $jsonData = curl_exec($ch);
        // split header from JSON data
        // and assign each to a variable
        list($headerContent, $jsonData) = explode("\r\n\r\n", $jsonData, 2);

        // convert header content into an array
        $headers = $this->processHeaders($headerContent);

        // get the 'X-Ratelimit-Remaining' header value
        $this->_xRateLimitRemaining = $headers['X-Ratelimit-Remaining'];

        if (!$jsonData) {
            throw new InstagramException('Error: _makeCall() - cURL error: ' . curl_error($ch));
        }

        curl_close($ch);

        return json_decode($jsonData);
    }
protected function _makeCall ( $ function , $ auth = false , $ params = null , $ method = 'GET' ) { if ( ! $ auth ) { // if the call doesn't requires authentication $ authMethod = '?client_id=' . $ this -> getApiKey ( ) ; } else { // if the call needs an authenticated user if ( ! isset ( $ this -> _accesstoken ) ) { throw new InstagramException ( "Error: _makeCall() | $function - This method requires an authenticated users access token." ) ; } $ authMethod = '?access_token=' . $ this -> getAccessToken ( ) ; } $ paramString = null ; if ( isset ( $ params ) && is_array ( $ params ) ) { $ paramString = '&' . http_build_query ( $ params ) ; } $ apiCall = self :: API_URL . $ function . $ authMethod . ( ( 'GET' === $ method ) ? $ paramString : null ) ; // we want JSON $ headerData = array ( 'Accept: application/json' ) ; if ( $ this -> _signedheader ) { $ apiCall .= ( strstr ( $ apiCall , '?' ) ? '&' : '?' ) . 'sig=' . $ this -> _signHeader ( $ function , $ authMethod , $ params ) ; } $ ch = curl_init ( ) ; curl_setopt ( $ ch , CURLOPT_URL , $ apiCall ) ; curl_setopt ( $ ch , CURLOPT_HTTPHEADER , $ headerData ) ; curl_setopt ( $ ch , CURLOPT_CONNECTTIMEOUT , 20 ) ; curl_setopt ( $ ch , CURLOPT_TIMEOUT , 90 ) ; curl_setopt ( $ ch , CURLOPT_RETURNTRANSFER , true ) ; curl_setopt ( $ ch , CURLOPT_SSL_VERIFYPEER , false ) ; curl_setopt ( $ ch , CURLOPT_HEADER , true ) ; switch ( $ method ) { case 'POST' : curl_setopt ( $ ch , CURLOPT_POST , count ( $ params ) ) ; curl_setopt ( $ ch , CURLOPT_POSTFIELDS , ltrim ( $ paramString , '&' ) ) ; break ; case 'DELETE' : curl_setopt ( $ ch , CURLOPT_CUSTOMREQUEST , 'DELETE' ) ; break ; } $ jsonData = curl_exec ( $ ch ) ; // split header from JSON data // and assign each to a variable list ( $ headerContent , $ jsonData ) = explode ( "\r\n\r\n" , $ jsonData , 2 ) ; // convert header content into an array $ headers = $ this -> processHeaders ( $ headerContent ) ; // get the 'X-Ratelimit-Remaining' header value $ this -> _xRateLimitRemaining = $ headers [ 'X-Ratelimit-Remaining' ] ; if ( ! $ jsonData ) { throw new InstagramException ( 'Error: _makeCall() - cURL error: ' . curl_error ( $ ch ) ) ; } curl_close ( $ ch ) ; return json_decode ( $ jsonData ) ; }
The call operator.

@param string $function API resource path
@param bool $auth Whether the function requires an access token
@param array $params Additional request parameters
@param string $method Request type GET|POST

@return mixed

@throws \MetzWeb\Instagram\InstagramException
The call operator .