public function execute($http_verb, $signed_url, $params = array()) { $curl = new RestRequest(); $ch = curl_init($signed_url); try { switch (strtoupper($http_verb)) { case 'GET': $curl->setCurlOpts($ch); $output = curl_exec($ch); $contentype = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (curl_errno($ch)) { $output = curl_error($ch); } curl_close($ch); break; case 'POST': curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); $curl->setCurlOpts($ch); $output = curl_exec($ch); $contentype = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); break; case 'PUT': curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); $curl->setCurlOpts($ch); $output = curl_exec($ch); $contentype = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); break; case 'DELETE': curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); $curl->setCurlOpts($ch); $output = curl_exec($ch); $contentype = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (curl_errno($ch)) { $output = curl_error($ch); } curl_close($ch); break; default: throw new InvalidArgumentException('Current verb (' . $http_verb . ') is an invalid REST verb.'); } } catch (InvalidArgumentException $e) { curl_close($ch); throw $e; } catch (Exception $e) { curl_close($ch); throw $e; } return array($output, $contentype, $httpcode); }