| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- <?php
- if (!defined('QCLOUDAPI_ROOT_PATH')) {
- // 目录入口
- define('QCLOUDAPI_ROOT_PATH', dirname(dirname(__FILE__)));
- }
- require_once QCLOUDAPI_ROOT_PATH . '/Common/Base.php';
- /**
- * QcloudApi_Module_Base
- * 模块基类
- */
- abstract class QcloudApi_Module_Base extends QcloudApi_Common_Base
- {
- /**
- * $_serverHost
- * 接口域名
- * @var string
- */
- protected $_serverHost = '';
- /**
- * $_serverUri
- * url路径
- * @var string
- */
- protected $_serverUri = '/v2/index.php';
- /**
- * $_secretId
- * secretId
- * @var string
- */
- protected $_secretId = "";
- /**
- * $_secretKey
- * secretKey
- * @var string
- */
- protected $_secretKey = "";
- /**
- * $_defaultRegion
- * 区域参数
- * @var string
- */
- protected $_defaultRegion = "";
- /**
- * $_requestMethod
- * 请求方法
- * @var string
- */
- protected $_requestMethod = "GET";
- /**
- * __construct
- * @param array $config [description]
- */
- public function __construct($config = array())
- {
- if (!empty($config))
- $this->setConfig($config);
- }
- /**
- * setConfig
- * 设置配置
- * @param array $config 模块配置
- */
- public function setConfig($config)
- {
- if (!is_array($config) || !count($config))
- return false;
- foreach ($config as $key => $val) {
- switch ($key) {
- case 'SecretId':
- $this->setConfigSecretId($val);
- break;
- case 'SecretKey':
- $this->setConfigSecretKey($val);
- break;
- case 'DefaultRegion':
- $this->setConfigDefaultRegion($val);
- break;
- case 'RequestMethod':
- $this->setConfigRequestMethod($val);
- break;
- default:
- ;
- break;
- }
- }
- return true;
- }
- /**
- * setConfigSecretId
- * 设置secretId
- * @param string $secretId secretId
- */
- public function setConfigSecretId($secretId)
- {
- $this->_secretId = $secretId;
- return $this;
- }
- /**
- * setConfigSecretKey
- * 设置secretKey
- * @param string $secretKey
- */
- public function setConfigSecretKey($secretKey)
- {
- $this->_secretKey = $secretKey;
- return $this;
- }
- /**
- * setConfigDefaultRegion
- * 设置区域参数
- * @param string $region
- */
- public function setConfigDefaultRegion($region)
- {
- $this->_defaultRegion = $region;
- return $this;
- }
- /**
- * setConfigRequestMethod
- * 设置请求方法
- * @param string $method
- */
- public function setConfigRequestMethod($method)
- {
- $this->_requestMethod = strtoupper($method);
- return $this;
- }
- /**
- * getLastRequest
- * 获取上次请求的url
- * @return
- */
- public function getLastRequest()
- {
- require_once QCLOUDAPI_ROOT_PATH . '/Common/Request.php';
- return QcloudApi_Common_Request::getRequestUrl();
- }
- /**
- * getLastResponse
- * 获取请求的原始返回
- * @return
- */
- public function getLastResponse()
- {
- require_once QCLOUDAPI_ROOT_PATH . '/Common/Request.php';
- return QcloudApi_Common_Request::getRawResponse();
- }
- /**
- * generateUrl
- * 生成请求的URL,不发起请求
- * @param string $name 接口方法名
- * @param array $params 请求参数
- * @return
- */
- public function generateUrl($name, $params)
- {
- require_once QCLOUDAPI_ROOT_PATH . '/Common/Request.php';
- $action = ucfirst($name);
- $params['Action'] = $action;
- if (!isset($params['Region']))
- $params['Region'] = $this->_defaultRegion;
- return QcloudApi_Common_Request::generateUrl($params, $this->_secretId, $this->_secretKey, $this->_requestMethod,
- $this->_serverHost, $this->_serverUri);
- }
- /**
- * __call
- * 通过__call转发请求
- * @param string $name 方法名
- * @param array $arguments 参数
- * @return
- */
- public function __call($name, $arguments)
- {
- $response = $this->_dispatchRequest($name, $arguments);
- return $this->_dealResponse($response);
- }
- /**
- * _dispatchRequest
- * 发起接口请求
- * @param string $name 接口名
- * @param array $arguments 接口参数
- * @return
- */
- protected function _dispatchRequest($name, $arguments)
- {
- $action = ucfirst($name);
- $params = array();
- if (is_array($arguments) && !empty($arguments)) {
- $params = (array) $arguments[0];
- }
- $params['Action'] = $action;
- if (!isset($params['Region']))
- $params['Region'] = $this->_defaultRegion;
- require_once QCLOUDAPI_ROOT_PATH . '/Common/Request.php';
- $response = QcloudApi_Common_Request::send($params, $this->_secretId, $this->_secretKey, $this->_requestMethod,
- $this->_serverHost, $this->_serverUri);
- return $response;
- }
- /**
- * _dealResponse
- * 处理返回
- * @param array $rawResponse
- * @return
- */
- protected function _dealResponse($rawResponse)
- {
- if (!is_array($rawResponse) || !isset($rawResponse['code'])) {
- $this->setError("", 'request falied!');
- return false;
- }
- if ($rawResponse['code']) {
- $ext = '';
- require_once QCLOUDAPI_ROOT_PATH . '/Common/Error.php';
- if (isset($rawResponse['detail'])) {
- // 批量异步操作,返回任务失败信息
- $ext = $rawResponse['detail'];
- }
- $this->setError($rawResponse['code'], $rawResponse['message'], $ext);
- return false;
- }
- unset($rawResponse['code'], $rawResponse['message']);
- if (count($rawResponse))
- return $rawResponse;
- else
- return true;
- }
- }
|