DirkGroenen\Pinterest\Transport\Request::execute PHP Method

execute() public method

Execute the http request
public execute ( string $method, string $apiCall, array $parameters = [], array $headers = [] ) : DirkGroenen\Pinterest\Transport\Response
$method string
$apiCall string
$parameters array
$headers array
return DirkGroenen\Pinterest\Transport\Response
    public function execute($method, $apiCall, array $parameters = array(), $headers = array())
    {
        // Check if the access token needs to be added
        if ($this->access_token != null) {
            $headers = array_merge($headers, array("Authorization: Bearer " . $this->access_token));
        }
        // Force cURL to not send Expect header to workaround bug with Akamai CDN not handling
        // this type of requests correctly
        $headers = array_merge($headers, array("Expect:"));
        // Setup CURL
        $ch = $this->curlbuilder->create();
        // Set default options
        $ch->setOptions(array(CURLOPT_URL => $apiCall, CURLOPT_HTTPHEADER => $headers, CURLOPT_CONNECTTIMEOUT => 20, CURLOPT_TIMEOUT => 90, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_HEADER => false, CURLINFO_HEADER_OUT => true));
        switch ($method) {
            case 'POST':
                $ch->setOptions(array(CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POST => count($parameters), CURLOPT_POSTFIELDS => $parameters));
                if (!class_exists('\\CURLFile') && defined('CURLOPT_SAFE_UPLOAD')) {
                    $ch->setOption(CURLOPT_SAFE_UPLOAD, false);
                } elseif (class_exists('\\CURLFile') && defined('CURLOPT_SAFE_UPLOAD')) {
                    $ch->setOption(CURLOPT_SAFE_UPLOAD, true);
                }
                break;
            case 'DELETE':
                $ch->setOption(CURLOPT_CUSTOMREQUEST, "DELETE");
                break;
            case 'PATCH':
                $ch->setOptions(array(CURLOPT_CUSTOMREQUEST => "PATCH", CURLOPT_POST => count($parameters), CURLOPT_POSTFIELDS => $parameters));
                break;
            default:
                $ch->setOption(CURLOPT_CUSTOMREQUEST, "GET");
                break;
        }
        // Execute request and catch response
        $response_data = $ch->execute();
        if ($response_data === false && !$ch->hasErrors()) {
            throw new CurlException("Error: Curl request failed");
        } else {
            if ($ch->hasErrors()) {
                throw new PinterestException('Error: execute() - cURL error: ' . $ch->getErrors(), $ch->getErrorNumber());
            }
        }
        // Initiate the response
        $response = new Response($response_data, $ch);
        // Check the response code
        if ($response->getResponseCode() >= 400) {
            throw new PinterestException('Pinterest error (code: ' . $response->getResponseCode() . ') with message: ' . $response->getMessage(), $response->getResponseCode());
        }
        // Get headers from last request
        $this->headers = $ch->getHeaders();
        // Close curl resource
        $ch->close();
        // Return the response
        return $response;
    }