0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
sugarcrm
/
6.5.16-25
/
standard
/
htdocs
/
include
/
[
Home
]
File: SugarHttpClient.php
<?php if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); /********************************************************************************* * SugarCRM Community Edition is a customer relationship management program developed by * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License version 3 as published by the * Free Software Foundation with the addition of the following permission added * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License along with * this program; if not, see http://www.gnu.org/licenses or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. * * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road, * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by * SugarCRM" logo. If the display of the logo is not reasonably feasible for * technical reasons, the Appropriate Legal Notices must display the words * "Powered by SugarCRM". ********************************************************************************/ /** * Very basic HTTP client * @api * Used in various places of the code and can be mocked out. * Presently does only one op - POST to url. * If you need more complex stuff, use Zend_Http_Client */ class SugarHttpClient { protected $last_error = ''; /** * sends POST request to REST service via CURL * @param string $url URL to call * @param string $postArgs POST args */ public function callRest($url, $postArgs) { if(!function_exists("curl_init")) { $this->last_error = 'ERROR_NO_CURL'; $GLOBALS['log']->fatal("REST call failed - no cURL!"); return false; } $curl = curl_init($url); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $postArgs); curl_setopt($curl, CURLOPT_TIMEOUT, 10); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); $GLOBALS['log']->debug("HTTP client call: $url -> $postArgs"); $response = curl_exec($curl); if($response === false) { $this->last_error = 'ERROR_REQUEST_FAILED'; $curl_errno = curl_errno($curl); $curl_error = curl_error($curl); $GLOBALS['log']->error("HTTP client: cURL call failed: error $curl_errno: $curl_error"); return false; } $GLOBALS['log']->debug("HTTP client response: $response"); curl_close($curl); return $response; } /** * Returns code of last error that happened to the client * @return string */ public function getLastError() { return $this->last_error; } }