120 lines
2.8 KiB
PHP
120 lines
2.8 KiB
PHP
<?php
|
|
|
|
Class sms_gw_api {
|
|
|
|
// WebServices parameters
|
|
private $ws_url = null;
|
|
private $ws_ssl_verify = true;
|
|
|
|
private $ws_connect_timeout = 5;
|
|
private $ws_timeout = 10;
|
|
|
|
function sms_gw_api($ws_url, $ws_ssl_verify = true, $ws_connect_timeout = 5, $ws_timeout = 10){
|
|
$this -> ws_url = $ws_url;
|
|
$this -> ws_ssl_verify = $ws_ssl_verify;
|
|
$this -> ws_connect_timeout = $ws_connect_timeout;
|
|
$this -> ws_timeout = $ws_timeout;
|
|
}
|
|
|
|
/*
|
|
* REST Request
|
|
*/
|
|
|
|
private function _ws_call($method, $url, $data = false, $json = true) {
|
|
if (is_null($this -> ws_url)) return;
|
|
|
|
$curl = curl_init();
|
|
|
|
switch ($method) {
|
|
case "POST":
|
|
curl_setopt($curl, CURLOPT_POST, 1);
|
|
|
|
if ($data)
|
|
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
|
|
break;
|
|
case "PUT":
|
|
curl_setopt($curl, CURLOPT_PUT, 1);
|
|
break;
|
|
default:
|
|
$method='GET';
|
|
if ($data)
|
|
$url = sprintf("%s?%s", $url, http_build_query($data));
|
|
}
|
|
|
|
if ($this -> ws_ssl_verify) {
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
|
|
}
|
|
else {
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
|
|
}
|
|
|
|
// Set timeouts
|
|
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $this -> ws_connect_timeout);
|
|
curl_setopt($curl, CURLOPT_TIMEOUT, $this -> ws_timeout);
|
|
|
|
$complete_url=$this -> ws_url.'/'.$url;
|
|
curl_setopt($curl, CURLOPT_URL, $complete_url);
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
|
|
|
logging("DEBUG", "sms_gw_api : Call URL $complete_url");
|
|
|
|
$result = curl_exec($curl);
|
|
|
|
if(curl_errno($curl)) {
|
|
logging("ERROR", "sms_gw_api : Error during $method request to ".$complete_url." : ".curl_error($curl));
|
|
curl_close($curl);
|
|
return False;
|
|
}
|
|
|
|
curl_close($curl);
|
|
|
|
logging("DEBUG","sms_gw_api : Return => '$result'");
|
|
|
|
if (!$json)
|
|
return $result;
|
|
|
|
try {
|
|
$data = json_decode($result,true);
|
|
logging("DEBUG","sms_gw_api : Decoded data :".print_r($data,1));
|
|
return $data;
|
|
}
|
|
catch (Exception $e) {
|
|
logging("ERROR","sms_gw_api : Error parsing $method request JSON result on ".$complete_url." : ".$e);
|
|
return False;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* send sms
|
|
* @param string number
|
|
* @param string text
|
|
* @return struct sms gw return struct
|
|
*/
|
|
function send_sms($number, $text){
|
|
return self :: _ws_call(
|
|
'GET',
|
|
"",
|
|
array(
|
|
'number' => $number,
|
|
'text' => $text,
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* check gateway is alive
|
|
* @return boolean sms gw status
|
|
*/
|
|
function check_gateway(){
|
|
$return=self :: _ws_call(
|
|
'GET',
|
|
"",
|
|
array(),
|
|
false
|
|
);
|
|
return ($return !== false && preg_match('/My SMS Gateway/', $return));
|
|
}
|
|
|
|
}
|