Exemple #1
0
 public function call($method, $params, $appId)
 {
     $prismHost = config::get('prism.prismHostUrl');
     $prismSocketFile = config::get('prism.prismSocketFile');
     //获取应用对应的key和secret
     $keySecret = apiUtil::getPrismKey($appId);
     $key = $keySecret['key'];
     $secret = $keySecret['secret'];
     //获取path
     $path = apiUtil::genApiPath($method);
     //params加入系统数据
     $systemParams = $this->__genSystemParams($method);
     $params = array_merge($params, $systemParams);
     $params['method'] = $method;
     //实例化请求工具
     $client = new base_prism_client($prismHost, $key, $secret, $prismSocketFile);
     //$path = "/api/bbc?method=bbc.test";
     $result = $client->post($path, $params);
     //日志记录
     //之前request和response分开记录的,发现不容易找,只好放一起了
     logger::info('call API : ' . $method . "\n" . 'wiht host : ' . $prismHost . "\n" . 'wiht key : ' . $key . "\n" . 'wiht secret : ' . $secret . "\n" . 'with params :' . var_export($params, 1) . "\n" . 'api result : ' . $result . "\n");
     //这里是返回数据
     $result = json_decode($result, 1);
     if ($result['error'] == null) {
         return $result['result'];
     } else {
         //根据返回的数据是否错误,如果有错误,尽量以原有异常抛出
         $exception = $result['error']['exception'] ? $result['error']['exception'] : 'Exception';
         logger::error(var_export($result, 1));
         $e = new $exception($result['error']['message']);
         throw $e;
     }
 }
Exemple #2
0
 public static function getAppConn($appName)
 {
     $host = config::get('prism.prismHostUrl');
     $keySecret = apiUtil::getPrismKey($appName);
     $key = $keySecret['key'];
     $secret = $keySecret['secret'];
     return ['host' => $host, 'key' => $key, 'secret' => $secret];
 }
Exemple #3
0
 public function set()
 {
     $conn = system_prism_init_util::getAdminConn();
     $appName = 'sysopen';
     $keySecret = apiUtil::getPrismKey($appName);
     $url = config::get('prism.prismHostUrl') . apiUtil::genApiPath('open.oauth.login') . '&v=v1&format=json';
     $config = array('CfgIdColumn' => 'accountid', 'Host' => $url, 'Key' => $keySecret['key'], 'Secret' => $keySecret['secret'], "Meta" => "{\"type\":\"oauth_type\"}", "Response" => "result");
     $params = array('is_sandbox' => false, 'config' => json_encode($config));
     logger::info('oauth on prism set : ' . var_export($params, true));
     $this->call($conn, '/api/platform/manageoauth/config/set', $params, 'post');
     return true;
 }
Exemple #4
0
 public function checkParams(&$class, &$action_name, &$params)
 {
     if (!method_exists($class, 'getParams')) {
         throw new RuntimeException('获取参数列表失败');
     }
     $paramsInfos = $class->getParams();
     apiUtil::paramsValidate($params, $paramsInfos);
     //预处理下params
     //转化下数据的格式,比如对数据结构fields进行转化和extends扩展等
     $params = apiUtil::pretreatment($params, $paramsInfos);
     //判断下方法是否存在
     if (!method_exists($class, $action_name)) {
         throw new RuntimeException('找不到方法 :' . $action_name);
     }
     return $params;
 }
Exemple #5
0
 protected function callInternal($flag, $parameters = array())
 {
     $apis = config::get('apis.routes');
     if (array_key_exists($flag, $apis)) {
         list($class, $method) = explode('@', $apis[$flag]['uses']);
     } else {
         throw new InvalidArgumentException("Api [{$flag}] not defined");
     }
     $instance = new $class();
     $apiParams = $instance->getParams();
     //验证数据
     //通过传入数据和api原定义的类型进行比对
     apiUtil::paramsValidate($parameters, $apiParams);
     //因为有些数据需要批量处理,就防这里了
     $apiParameters = apiUtil::pretreatment($parameters, $apiParams);
     return call_user_func(array($instance, $method), $apiParameters);
 }
Exemple #6
0
 private function __get_connection($queueName)
 {
     if (!isset(self::$__connection[$queueName])) {
         //获取这个队列是哪个app的,就可以根据appId去获取推送队列时用的key和secret
         $queueConf = config::get('queue.queues');
         $queueC = $queueConf[$queueName];
         $appId = $queueC['app'];
         //接下来就是要把app转化成key和secret了
         $keySecret = apiUtil::getPrismKey($appId);
         $key = $keySecret['key'];
         $secret = $keySecret['secret'];
         $host = config::get('prism.prismHostUrl');
         $host = rtrim($host, '/') . '/api';
         //这个是长连接的配置
         $socketFile = config::get('prism.prismSocketFile');
         //创建队列传输链接
         self::$__connection[$queueName] = new base_prism_client($host, $key, $secret, $socketFile);
     }
     return self::$__connection[$queueName];
 }
Exemple #7
0
 public function rpcCall($method, $parameters = array(), $identity)
 {
     $appName = $this->app_id;
     $appKey = apiUtil::getAppKey($appName);
     return rpc::call($method, $parameters, $appKey, $identity);
 }