23 public function get(
$url,
$data = [], $headers = [])
42 public function delete(
$url, $headers = [])
63 $headers[] =
'Content-Length: ' . strlen(
$data);
64 $curlOpts[CURLOPT_POSTFIELDS] =
$data;
82 $headers[] =
'Content-Length: ' . strlen(
$data);
83 $curlOpts[CURLOPT_POSTFIELDS] =
$data;
101 $curl = curl_init(
$url);
102 if ($curl ===
false) {
103 throw new \Exception(
"Error Initializing cURL for baseUrl: " .
$url);
107 $curlOpts = $this->getCurlOptions($additionalCurlOpts, $headers);
110 foreach ($curlOpts as $opt => $val) {
111 curl_setopt($curl, $opt, $val);
116 throw new \Exception(curl_error($curl));
120 $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
121 $resp[
"header"] = substr(
$response, 0, $headerSize);
122 $resp[
"body"] = substr(
$response, $headerSize);
124 $resp[
"meta"] = curl_getinfo($curl);
125 if ($resp[
"meta"] ===
false) {
126 throw new \Exception(curl_error($curl));
131 $meta = $resp[
"meta"];
132 if ($meta && $meta[
'http_code'] >= 400) {
133 throw new \Exception($resp[
"body"], $meta[
'http_code']);
146 private function getCurlOptions($customCurlOpts = [], $headers = [])
150 CURLOPT_RETURNTRANSFER =>
true,
151 CURLOPT_SSL_VERIFYPEER =>
false,
152 CURLOPT_FOLLOWLOCATION =>
false,
153 CURLOPT_MAXREDIRS => 10,
154 CURLOPT_HTTPHEADER => [],
159 $headers = array_merge($curlOpts[CURLOPT_HTTPHEADER], $headers);
160 if (TESTS_XDEBUG_ENABLED) {
161 $headers[] =
'Cookie: XDEBUG_SESSION=' . TESTS_XDEBUG_SESSION;
163 $curlOpts[CURLOPT_HTTPHEADER] = $headers;
166 foreach ($customCurlOpts as $opt => $val) {
167 $curlOpts[$opt] = $val;
invokeApi($url, $additionalCurlOpts, $headers=[])
post($url, $data, $headers=[])
put($url, $data, $headers=[])