You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.7 KiB
95 lines
2.7 KiB
<?php |
|
|
|
class Curl { |
|
|
|
private $_curl; |
|
private $_protocol; |
|
private $_host; |
|
private $_port; |
|
|
|
public function __construct($protocol, $host, $port, $username = false, $password = false) { |
|
|
|
$this->_protocol = $protocol; |
|
$this->_host = $host; |
|
$this->_port = $port; |
|
|
|
$this->_curl = curl_init(); |
|
|
|
|
|
if ($username && $password) { |
|
$headers = [ |
|
'Content-Type: application/json', |
|
sprintf('Authorization: Basic %s', base64_encode($username . ':' . $password)), |
|
]; |
|
} else { |
|
$headers = [ |
|
'Content-Type: application/json', |
|
]; |
|
} |
|
|
|
curl_setopt_array($this->_curl, [CURLOPT_RETURNTRANSFER => true, |
|
CURLOPT_FOLLOWLOCATION => true, |
|
CURLOPT_FRESH_CONNECT => true, |
|
//CURLOPT_VERBOSE => true, |
|
CURLOPT_HTTPHEADER => $headers, |
|
]); |
|
} |
|
|
|
public function __destruct() { |
|
curl_close($this->_curl); |
|
} |
|
|
|
public function sanitize($string, $lowercase = false) { |
|
|
|
// Lowercase |
|
if ($lowercase) { |
|
$string = mb_strtolower($string, 'UTF-8'); |
|
} |
|
|
|
return $string; |
|
} |
|
|
|
protected function prepare($uri, $method, $timeout = 30, array $postfields = [], $verify_ssl = true, $verify_host = true) { |
|
|
|
curl_setopt($this->_curl, CURLOPT_URL, $this->_protocol . '://' . $this->_host . ':' . $this->_port . '/' . $uri); |
|
curl_setopt($this->_curl, CURLOPT_CONNECTTIMEOUT, $timeout); |
|
curl_setopt($this->_curl, CURLOPT_TIMEOUT, $timeout); |
|
|
|
if ($verify_ssl === false) { |
|
curl_setopt($this->_curl, CURLOPT_SSL_VERIFYPEER, false); |
|
} |
|
|
|
if ($verify_host === false) { |
|
curl_setopt($this->_curl, CURLOPT_SSL_VERIFYHOST, false); |
|
} |
|
|
|
if ($method) { |
|
curl_setopt($this->_curl, CURLOPT_CUSTOMREQUEST, $method); |
|
} |
|
|
|
if ($method == 'POST' && $postfields) { |
|
curl_setopt($this->_curl, CURLOPT_POSTFIELDS, json_encode($postfields)); |
|
} |
|
} |
|
|
|
protected function execute($json = true) { |
|
|
|
$response = curl_exec($this->_curl); |
|
$errorNumber = curl_errno($this->_curl); |
|
$errorText = curl_error($this->_curl); |
|
|
|
if ($errorNumber > 0) { |
|
return false; |
|
} |
|
|
|
if ($response) { |
|
if ($json) { |
|
return json_decode($response, true); |
|
} else { |
|
return $response; |
|
} |
|
} |
|
|
|
return false; |
|
} |
|
}
|
|
|