* @license http://opensource.org/licenses/mit-license.php The MIT License */ namespace Instagram\Net; /** * Curl Client * * Uses curl to access the API */ class CurlClient implements ClientInterface { /** * Curl Resource * * @var curl resource */ protected $curl = null; /** * Constructor * * Initializes the curl object */ function __construct(){ $this->initializeCurl(); } /** * GET * * @param string $url URL to send get request to * @param array $data GET data * @return \Instagram\Net\Response * @access public */ public function get( $url, array $data = null ){ curl_setopt( $this->curl, CURLOPT_CUSTOMREQUEST, 'GET' ); curl_setopt( $this->curl, CURLOPT_URL, sprintf( "%s?%s", $url, http_build_query( $data ) ) ); return $this->fetch(); } /** * POST * * @param string $url URL to send post request to * @param array $data POST data * @return \Instagram\Net\Response * @access public */ public function post( $url, array $data = null ) { curl_setopt( $this->curl, CURLOPT_CUSTOMREQUEST, 'POST' ); curl_setopt( $this->curl, CURLOPT_URL, $url ); curl_setopt( $this->curl, CURLOPT_POSTFIELDS, http_build_query( $data ) ); return $this->fetch(); } /** * PUT * * @param string $url URL to send put request to * @param array $data PUT data * @return \Instagram\Net\Response * @access public */ public function put( $url, array $data = null ){ curl_setopt( $this->curl, CURLOPT_CUSTOMREQUEST, 'PUT' ); } /** * DELETE * * @param string $url URL to send delete request to * @param array $data DELETE data * @return \Instagram\Net\Response * @access public */ public function delete( $url, array $data = null ){ curl_setopt( $this->curl, CURLOPT_URL, sprintf( "%s?%s", $url, http_build_query( $data ) ) ); curl_setopt( $this->curl, CURLOPT_CUSTOMREQUEST, 'DELETE' ); return $this->fetch(); } /** * Initialize curl * * Sets initial parameters on the curl object * * @access protected */ protected function initializeCurl() { $this->curl = curl_init(); curl_setopt( $this->curl, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $this->curl, CURLOPT_SSL_VERIFYPEER, false ); } /** * Fetch * * Execute the curl object * * @return StdClass * @access protected * @throws \Instagram\Core\ApiException */ protected function fetch() { $raw_response = curl_exec( $this->curl ); $error = curl_error( $this->curl ); if ( $error ) { throw new \Instagram\Core\ApiException( $error, 666, 'CurlError' ); } return $raw_response; } }