<?php
require_once 'util/HttpClient.php';
require_once 'Config.php';
class SendCloudSMS {
	private $host = 'http://www.sendcloud.net/';
	private $sms_user;
	private $sms_key;
	private $version;
	private $client;
	public function __construct($sms_user, $sms_key, $version = 'v1') {
		$this->sms_user = $sms_user;
		$this->sms_key = $sms_key;
		$this->client = new HttpClient ( $this->host );
	}
	
	
	private function _getSignature($param) {
		$sParamStr = "";
		ksort ( $param );
		foreach ( $param as $sKey => $sValue ) {
			if (is_array ( $sValue )) {
				$value = implode ( ";", $sValue );
				$sParamStr .= $sKey . '=' . $value . '&';
			} else {
				$sParamStr .= $sKey . '=' . $sValue . '&';
			}
		}
		$sParamStr = trim ( $sParamStr, '&' );
		$sSignature = md5 ( $this->sms_key . "&" . $sParamStr . "&" . $this->sms_key );
		return $sSignature;
	}
	public function send(SmsMsg $sms) {
		$method = "POST";
		$param = $sms->jsonSerialize ();
		$param ['smsUser'] = $this->sms_user;
		$phone= $param['phone'];
		$param['phone']=implode(";", $phone);
		$param['vars']=json_encode($param['vars']);
		$param ['signature'] = $this->_getSignature ( $param );
		$resonse = $this->client->post ( 'POST', '/smsapi/send', '',$param );
		return $resonse;
	}
	public function sendVoice(VoiceMsg $sms) {
		$method = "POST";
		$param = $sms->jsonSerialize ();
		$param ['smsUser'] = $this->sms_user;
		$param ['signature'] = $this->_getSignature ( $param );
		$resonse = $this->client->post ( $method, '/smsapi/sendVoice','', $param );
		return $resonse;
	}
}



