/** * Request * @param requestMethod * @param requestEndpoint * @param requestBody * @return VOID */ public function request($requestMethod, $requestEndpoint, $requestBody = NULL, $requestHeaders = []) { if (!$requestMethod || !$requestEndpoint) { throw new \InvalidArgumentException("Missing Arguments"); } $this->addHeaders($requestHeaders); if (Router::isDev()) { ob_start(); \pre_r($requestMethod, $requestEndpoint, $requestBody, $this->getAllHeaders()); $apiLog = ob_get_contents(); ob_end_clean(); error_log($apiLog); } $c = curl_init(); curl_setopt($c, CURLOPT_URL, $requestEndpoint); curl_setopt($c, CURLOPT_TIMEOUT, 30); curl_setopt($c, CURLOPT_USERAGENT, 'touchbase-php-library/2.0'); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); curl_setopt($c, CURLINFO_HEADER_OUT, true); curl_setopt($c, CURLOPT_HTTPHEADER, $this->getAllHeaders()); curl_setopt($c, CURLOPT_CUSTOMREQUEST, strtoupper($requestMethod)); curl_setopt($c, CURLOPT_POSTFIELDS, $requestBody); curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); $this->_lastResponse = curl_exec($c); $this->_lastResponseStatus = curl_getinfo($c, CURLINFO_HTTP_CODE); $this->_lastResponseContentType = curl_getinfo($c, CURLINFO_CONTENT_TYPE); $curlError = curl_error($c); if ($curlError) { throw new \RuntimeException(is_string($curlError) ? $curlError : "Something Terrible Happened!"); } return $this->_lastResponse; }