Passed
Push — v6 ( 95b370...25ce72 )
by 光春
03:13
created
src/service/taobao/bin/dingtalk/DingTalkClient.php 3 patches
Indentation   +322 added lines, -322 removed lines patch added patch discarded remove patch
@@ -1,27 +1,27 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 class DingTalkClient
3 3
 {
4
-	/**@Author chaohui.zch copy from TopClient and modify 2016-12-14 **/
4
+    /**@Author chaohui.zch copy from TopClient and modify 2016-12-14 **/
5 5
 
6 6
     /**@Author chaohui.zch modify $gatewayUrl 2017-07-18 **/
7 7
     public $gatewayUrl = "https://eco.taobao.com/router/rest";
8 8
 
9
-	public $format = "xml";
9
+    public $format = "xml";
10 10
 
11
-	public $connectTimeout;
11
+    public $connectTimeout;
12 12
 
13
-	public $readTimeout;
13
+    public $readTimeout;
14 14
 
15 15
     public $apiCallType;
16 16
 
17 17
     public $httpMethod;
18 18
 
19
-	/** 是否打开入参check**/
20
-	public $checkRequest = true;
19
+    /** 是否打开入参check**/
20
+    public $checkRequest = true;
21 21
 
22
-	protected $apiVersion = "2.0";
22
+    protected $apiVersion = "2.0";
23 23
 
24
-	protected $sdkVersion = "dingtalk-sdk-php-20161214";
24
+    protected $sdkVersion = "dingtalk-sdk-php-20161214";
25 25
 
26 26
     public function __construct($apiCallType = null, $httpMethod = null, $format = "xml"){
27 27
         $this->apiCallType = $apiCallType;
@@ -29,80 +29,80 @@  discard block
 block discarded – undo
29 29
         $this->format = $format;
30 30
     }
31 31
 
32
-	public function curl($url, $postFields = null)
33
-	{
34
-		$ch = curl_init();
35
-		curl_setopt($ch, CURLOPT_URL, $url);
36
-		curl_setopt($ch, CURLOPT_FAILONERROR, false);
37
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
38
-		if ($this->readTimeout) {
39
-			curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
40
-		}
41
-		if ($this->connectTimeout) {
42
-			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
43
-		}
44
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
45
-		//https 请求
46
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
47
-			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
48
-			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
49
-		}
50
-
51
-		if (is_array($postFields) && 0 < count($postFields))
52
-		{
53
-			$postBodyString = "";
54
-			$postMultipart = false;
55
-			foreach ($postFields as $k => $v)
56
-			{
57
-				if("@" != substr($v, 0, 1))//判断是不是文件上传
58
-				{
59
-					$postBodyString .= "$k=" . urlencode($v) . "&"; 
60
-				}
61
-				else//文件上传用multipart/form-data,否则用www-form-urlencoded
62
-				{
63
-					$postMultipart = true;
64
-					if(class_exists('\CURLFile')){
65
-						$postFields[$k] = new \CURLFile(substr($v, 1));
66
-					}
67
-				}
68
-			}
69
-			unset($k, $v);
70
-			curl_setopt($ch, CURLOPT_POST, true);
71
-			if ($postMultipart)
72
-			{
73
-				if (class_exists('\CURLFile')) {
74
-				    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
75
-				} else {
76
-				    if (defined('CURLOPT_SAFE_UPLOAD')) {
77
-				        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
78
-				    }
79
-				}
80
-				curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
81
-			}
82
-			else
83
-			{
84
-				$header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
85
-				curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
86
-				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
87
-			}
88
-		}
89
-		$reponse = curl_exec($ch);
32
+    public function curl($url, $postFields = null)
33
+    {
34
+        $ch = curl_init();
35
+        curl_setopt($ch, CURLOPT_URL, $url);
36
+        curl_setopt($ch, CURLOPT_FAILONERROR, false);
37
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
38
+        if ($this->readTimeout) {
39
+            curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
40
+        }
41
+        if ($this->connectTimeout) {
42
+            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
43
+        }
44
+        curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
45
+        //https 请求
46
+        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
47
+            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
48
+            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
49
+        }
50
+
51
+        if (is_array($postFields) && 0 < count($postFields))
52
+        {
53
+            $postBodyString = "";
54
+            $postMultipart = false;
55
+            foreach ($postFields as $k => $v)
56
+            {
57
+                if("@" != substr($v, 0, 1))//判断是不是文件上传
58
+                {
59
+                    $postBodyString .= "$k=" . urlencode($v) . "&"; 
60
+                }
61
+                else//文件上传用multipart/form-data,否则用www-form-urlencoded
62
+                {
63
+                    $postMultipart = true;
64
+                    if(class_exists('\CURLFile')){
65
+                        $postFields[$k] = new \CURLFile(substr($v, 1));
66
+                    }
67
+                }
68
+            }
69
+            unset($k, $v);
70
+            curl_setopt($ch, CURLOPT_POST, true);
71
+            if ($postMultipart)
72
+            {
73
+                if (class_exists('\CURLFile')) {
74
+                    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
75
+                } else {
76
+                    if (defined('CURLOPT_SAFE_UPLOAD')) {
77
+                        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
78
+                    }
79
+                }
80
+                curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
81
+            }
82
+            else
83
+            {
84
+                $header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
85
+                curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
86
+                curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
87
+            }
88
+        }
89
+        $reponse = curl_exec($ch);
90 90
 		
91
-		if (curl_errno($ch))
92
-		{
93
-			throw new Exception(curl_error($ch),0);
94
-		}
95
-		else
96
-		{
97
-			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
98
-			if (200 !== $httpStatusCode)
99
-			{
100
-				throw new Exception($reponse,$httpStatusCode);
101
-			}
102
-		}
103
-		curl_close($ch);
104
-		return $reponse;
105
-	}
91
+        if (curl_errno($ch))
92
+        {
93
+            throw new Exception(curl_error($ch),0);
94
+        }
95
+        else
96
+        {
97
+            $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
98
+            if (200 !== $httpStatusCode)
99
+            {
100
+                throw new Exception($reponse,$httpStatusCode);
101
+            }
102
+        }
103
+        curl_close($ch);
104
+        return $reponse;
105
+    }
106 106
 
107 107
     public function curl_get($url,$apiFields = null)
108 108
     {
@@ -234,97 +234,97 @@  discard block
 block discarded – undo
234 234
         return $reponse;
235 235
     }
236 236
 
237
-	public function curl_with_memory_file($url, $postFields = null, $fileFields = null)
238
-	{
239
-		$ch = curl_init();
240
-		curl_setopt($ch, CURLOPT_URL, $url);
241
-		curl_setopt($ch, CURLOPT_FAILONERROR, false);
242
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
243
-		if ($this->readTimeout) {
244
-			curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
245
-		}
246
-		if ($this->connectTimeout) {
247
-			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
248
-		}
249
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
250
-		//https 请求
251
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
252
-			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
253
-			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
254
-		}
255
-		//生成分隔符
256
-		$delimiter = '-------------' . uniqid();
257
-		//先将post的普通数据生成主体字符串
258
-		$data = '';
259
-		if($postFields != null){
260
-			foreach ($postFields as $name => $content) {
261
-			    $data .= "--" . $delimiter . "\r\n";
262
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"';
263
-			    //multipart/form-data 不需要urlencode,参见 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data
264
-			    $data .= "\r\n\r\n" . $content . "\r\n";
265
-			}
266
-			unset($name,$content);
267
-		}
268
-
269
-		//将上传的文件生成主体字符串
270
-		if($fileFields != null){
271
-			foreach ($fileFields as $name => $file) {
272
-			    $data .= "--" . $delimiter . "\r\n";
273
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['filename'] . "\" \r\n";
274
-			    $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//多了个文档类型
275
-
276
-			    $data .= $file['content'] . "\r\n";
277
-			}
278
-			unset($name,$file);
279
-		}
280
-		//主体结束的分隔符
281
-		$data .= "--" . $delimiter . "--";
282
-
283
-		curl_setopt($ch, CURLOPT_POST, true);
284
-		curl_setopt($ch, CURLOPT_HTTPHEADER , array(
285
-		    'Content-Type: multipart/form-data; boundary=' . $delimiter,
286
-		    'Content-Length: ' . strlen($data))
287
-		); 
288
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
289
-		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
290
-
291
-		$reponse = curl_exec($ch);
292
-		unset($data);
293
-
294
-		if (curl_errno($ch))
295
-		{
296
-			throw new Exception(curl_error($ch),0);
297
-		}
298
-		else
299
-		{
300
-			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
301
-			if (200 !== $httpStatusCode)
302
-			{
303
-				throw new Exception($reponse,$httpStatusCode);
304
-			}
305
-		}
306
-		curl_close($ch);
307
-		return $reponse;
308
-	}
309
-
310
-	protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt)
311
-	{
312
-		$localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
313
-		$logger = new TopLogger;
314
-		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . "_" . date("Y-m-d") . ".log";
315
-		$logger->conf["separator"] = "^_^";
316
-		$logData = array(
317
-		date("Y-m-d H:i:s"),
318
-		$apiName,
319
-		$localIp,
320
-		PHP_OS,
321
-		$this->sdkVersion,
322
-		$requestUrl,
323
-		$errorCode,
324
-		str_replace("\n","",$responseTxt)
325
-		);
326
-		$logger->log($logData);
327
-	}
237
+    public function curl_with_memory_file($url, $postFields = null, $fileFields = null)
238
+    {
239
+        $ch = curl_init();
240
+        curl_setopt($ch, CURLOPT_URL, $url);
241
+        curl_setopt($ch, CURLOPT_FAILONERROR, false);
242
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
243
+        if ($this->readTimeout) {
244
+            curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
245
+        }
246
+        if ($this->connectTimeout) {
247
+            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
248
+        }
249
+        curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
250
+        //https 请求
251
+        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
252
+            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
253
+            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
254
+        }
255
+        //生成分隔符
256
+        $delimiter = '-------------' . uniqid();
257
+        //先将post的普通数据生成主体字符串
258
+        $data = '';
259
+        if($postFields != null){
260
+            foreach ($postFields as $name => $content) {
261
+                $data .= "--" . $delimiter . "\r\n";
262
+                $data .= 'Content-Disposition: form-data; name="' . $name . '"';
263
+                //multipart/form-data 不需要urlencode,参见 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data
264
+                $data .= "\r\n\r\n" . $content . "\r\n";
265
+            }
266
+            unset($name,$content);
267
+        }
268
+
269
+        //将上传的文件生成主体字符串
270
+        if($fileFields != null){
271
+            foreach ($fileFields as $name => $file) {
272
+                $data .= "--" . $delimiter . "\r\n";
273
+                $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['filename'] . "\" \r\n";
274
+                $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//多了个文档类型
275
+
276
+                $data .= $file['content'] . "\r\n";
277
+            }
278
+            unset($name,$file);
279
+        }
280
+        //主体结束的分隔符
281
+        $data .= "--" . $delimiter . "--";
282
+
283
+        curl_setopt($ch, CURLOPT_POST, true);
284
+        curl_setopt($ch, CURLOPT_HTTPHEADER , array(
285
+            'Content-Type: multipart/form-data; boundary=' . $delimiter,
286
+            'Content-Length: ' . strlen($data))
287
+        ); 
288
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
289
+        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
290
+
291
+        $reponse = curl_exec($ch);
292
+        unset($data);
293
+
294
+        if (curl_errno($ch))
295
+        {
296
+            throw new Exception(curl_error($ch),0);
297
+        }
298
+        else
299
+        {
300
+            $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
301
+            if (200 !== $httpStatusCode)
302
+            {
303
+                throw new Exception($reponse,$httpStatusCode);
304
+            }
305
+        }
306
+        curl_close($ch);
307
+        return $reponse;
308
+    }
309
+
310
+    protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt)
311
+    {
312
+        $localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
313
+        $logger = new TopLogger;
314
+        $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . "_" . date("Y-m-d") . ".log";
315
+        $logger->conf["separator"] = "^_^";
316
+        $logData = array(
317
+        date("Y-m-d H:i:s"),
318
+        $apiName,
319
+        $localIp,
320
+        PHP_OS,
321
+        $this->sdkVersion,
322
+        $requestUrl,
323
+        $errorCode,
324
+        str_replace("\n","",$responseTxt)
325
+        );
326
+        $logger->log($logData);
327
+    }
328 328
 
329 329
     public function execute($request, $session = null,$bestUrl = null){
330 330
         if(DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType){
@@ -342,7 +342,7 @@  discard block
 block discarded – undo
342 342
         return $this->executeWithCorpId($request,$bestUrl, $accessKey, $accessSecret, $suiteTicket, null);
343 343
     }
344 344
 
345
-	public function executeWithCorpId($request, $bestUrl = null, $accessKey, $accessSecret, $suiteTicket, $corpId) {
345
+    public function executeWithCorpId($request, $bestUrl = null, $accessKey, $accessSecret, $suiteTicket, $corpId) {
346 346
         if(DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType){
347 347
             return $this->_executeOapi($request, null, $bestUrl,$accessKey, $accessSecret, $suiteTicket, $corpId);
348 348
         }else{
@@ -494,160 +494,160 @@  discard block
 block discarded – undo
494 494
     }
495 495
 
496 496
     private function _execute($request, $session = null,$bestUrl = null)
497
-	{
498
-		$result =  new ResultSet(); 
499
-		if($this->checkRequest) {
500
-			try {
501
-				$request->check();
502
-			} catch (Exception $e) {
503
-
504
-				$result->code = $e->getCode();
505
-				$result->msg = $e->getMessage();
506
-				return $result;
507
-			}
508
-		}
509
-		//组装系统参数
510
-		$sysParams["v"] = $this->apiVersion;
511
-		$sysParams["format"] = $this->format;
512
-		$sysParams["method"] = $request->getApiMethodName();
513
-		$sysParams["timestamp"] = date("Y-m-d H:i:s");
514
-		if (null != $session)
515
-		{
516
-			$sysParams["session"] = $session;
517
-		}
518
-		$apiParams = array();
519
-		//获取业务参数
520
-		$apiParams = $request->getApiParas();
521
-
522
-
523
-		//系统参数放入GET请求串
524
-		if($bestUrl){
497
+    {
498
+        $result =  new ResultSet(); 
499
+        if($this->checkRequest) {
500
+            try {
501
+                $request->check();
502
+            } catch (Exception $e) {
503
+
504
+                $result->code = $e->getCode();
505
+                $result->msg = $e->getMessage();
506
+                return $result;
507
+            }
508
+        }
509
+        //组装系统参数
510
+        $sysParams["v"] = $this->apiVersion;
511
+        $sysParams["format"] = $this->format;
512
+        $sysParams["method"] = $request->getApiMethodName();
513
+        $sysParams["timestamp"] = date("Y-m-d H:i:s");
514
+        if (null != $session)
515
+        {
516
+            $sysParams["session"] = $session;
517
+        }
518
+        $apiParams = array();
519
+        //获取业务参数
520
+        $apiParams = $request->getApiParas();
521
+
522
+
523
+        //系统参数放入GET请求串
524
+        if($bestUrl){
525 525
             if(strpos($bestUrl,'?') === false){
526 526
                 $requestUrl = $bestUrl."?";
527 527
             }else{
528 528
                 $requestUrl = $bestUrl;
529 529
             }
530
-			$sysParams["partner_id"] = $this->getClusterTag();
531
-		}else{
532
-			$requestUrl = $this->gatewayUrl."?";
533
-			$sysParams["partner_id"] = $this->sdkVersion;
534
-		}
535
-
536
-		foreach ($sysParams as $sysParamKey => $sysParamValue)
537
-		{
538
-			// if(strcmp($sysParamKey,"timestamp") != 0)
539
-			$requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";
540
-		}
541
-
542
-		$fileFields = array();
543
-		foreach ($apiParams as $key => $value) {
544
-			if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
545
-				$value['name'] = $key;
546
-				$fileFields[$key] = $value;
547
-				unset($apiParams[$key]);
548
-			}
549
-		}
550
-
551
-		// $requestUrl .= "timestamp=" . urlencode($sysParams["timestamp"]) . "&";
552
-		$requestUrl = substr($requestUrl, 0, -1);
553
-
554
-		//发起HTTP请求
555
-		try
556
-		{
557
-			if(count($fileFields) > 0){
558
-				$resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
559
-			}else{
560
-				$resp = $this->curl($requestUrl, $apiParams);
561
-			}
562
-		}
563
-		catch (Exception $e)
564
-		{
565
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
566
-			$result->code = $e->getCode();
567
-			$result->msg = $e->getMessage();
568
-			return $result;
569
-		}
570
-
571
-		unset($apiParams);
572
-		unset($fileFields);
573
-		//解析TOP返回结果
574
-		$respWellFormed = false;
575
-		if ("json" == $this->format)
576
-		{
577
-			$respObject = json_decode($resp);
578
-			if (null !== $respObject)
579
-			{
580
-				$respWellFormed = true;
581
-				foreach ($respObject as $propKey => $propValue)
582
-				{
583
-					$respObject = $propValue;
584
-				}
585
-			}
586
-		}
587
-		else if("xml" == $this->format)
588
-		{
589
-			$respObject = @simplexml_load_string($resp);
590
-			if (false !== $respObject)
591
-			{
592
-				$respWellFormed = true;
593
-			}
594
-		}
595
-
596
-		//返回的HTTP文本不是标准JSON或者XML,记下错误日志
597
-		if (false === $respWellFormed)
598
-		{
599
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
600
-			$result->code = 0;
601
-			$result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
602
-			return $result;
603
-		}
604
-
605
-		//如果TOP返回了错误码,记录到业务错误日志中
606
-		if (isset($respObject->code))
607
-		{
608
-			$logger = new TopLogger;
609
-			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" .  "_" . date("Y-m-d") . ".log";
610
-			$logger->log(array(
611
-				date("Y-m-d H:i:s"),
612
-				$resp
613
-			));
614
-		}
615
-		return $respObject;
616
-	}
617
-
618
-	public function exec($paramsArray)
619
-	{
620
-		if (!isset($paramsArray["method"]))
621
-		{
622
-			trigger_error("No api name passed");
623
-		}
624
-		$inflector = new LtInflector;
625
-		$inflector->conf["separator"] = ".";
626
-		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
627
-		if (!class_exists($requestClassName))
628
-		{
629
-			trigger_error("No such dingtalk-api: " . $paramsArray["method"]);
630
-		}
631
-
632
-		$session = isset($paramsArray["session"]) ? $paramsArray["session"] : null;
633
-
634
-		$req = new $requestClassName;
635
-		foreach($paramsArray as $paraKey => $paraValue)
636
-		{
637
-			$inflector->conf["separator"] = "_";
638
-			$setterMethodName = $inflector->camelize($paraKey);
639
-			$inflector->conf["separator"] = ".";
640
-			$setterMethodName = "set" . $inflector->camelize($setterMethodName);
641
-			if (method_exists($req, $setterMethodName))
642
-			{
643
-				$req->$setterMethodName($paraValue);
644
-			}
645
-		}
646
-		return $this->execute($req, $session);
647
-	}
648
-
649
-	private function getClusterTag()
530
+            $sysParams["partner_id"] = $this->getClusterTag();
531
+        }else{
532
+            $requestUrl = $this->gatewayUrl."?";
533
+            $sysParams["partner_id"] = $this->sdkVersion;
534
+        }
535
+
536
+        foreach ($sysParams as $sysParamKey => $sysParamValue)
537
+        {
538
+            // if(strcmp($sysParamKey,"timestamp") != 0)
539
+            $requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";
540
+        }
541
+
542
+        $fileFields = array();
543
+        foreach ($apiParams as $key => $value) {
544
+            if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
545
+                $value['name'] = $key;
546
+                $fileFields[$key] = $value;
547
+                unset($apiParams[$key]);
548
+            }
549
+        }
550
+
551
+        // $requestUrl .= "timestamp=" . urlencode($sysParams["timestamp"]) . "&";
552
+        $requestUrl = substr($requestUrl, 0, -1);
553
+
554
+        //发起HTTP请求
555
+        try
556
+        {
557
+            if(count($fileFields) > 0){
558
+                $resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
559
+            }else{
560
+                $resp = $this->curl($requestUrl, $apiParams);
561
+            }
562
+        }
563
+        catch (Exception $e)
564
+        {
565
+            $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
566
+            $result->code = $e->getCode();
567
+            $result->msg = $e->getMessage();
568
+            return $result;
569
+        }
570
+
571
+        unset($apiParams);
572
+        unset($fileFields);
573
+        //解析TOP返回结果
574
+        $respWellFormed = false;
575
+        if ("json" == $this->format)
576
+        {
577
+            $respObject = json_decode($resp);
578
+            if (null !== $respObject)
579
+            {
580
+                $respWellFormed = true;
581
+                foreach ($respObject as $propKey => $propValue)
582
+                {
583
+                    $respObject = $propValue;
584
+                }
585
+            }
586
+        }
587
+        else if("xml" == $this->format)
588
+        {
589
+            $respObject = @simplexml_load_string($resp);
590
+            if (false !== $respObject)
591
+            {
592
+                $respWellFormed = true;
593
+            }
594
+        }
595
+
596
+        //返回的HTTP文本不是标准JSON或者XML,记下错误日志
597
+        if (false === $respWellFormed)
598
+        {
599
+            $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
600
+            $result->code = 0;
601
+            $result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
602
+            return $result;
603
+        }
604
+
605
+        //如果TOP返回了错误码,记录到业务错误日志中
606
+        if (isset($respObject->code))
607
+        {
608
+            $logger = new TopLogger;
609
+            $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" .  "_" . date("Y-m-d") . ".log";
610
+            $logger->log(array(
611
+                date("Y-m-d H:i:s"),
612
+                $resp
613
+            ));
614
+        }
615
+        return $respObject;
616
+    }
617
+
618
+    public function exec($paramsArray)
619
+    {
620
+        if (!isset($paramsArray["method"]))
621
+        {
622
+            trigger_error("No api name passed");
623
+        }
624
+        $inflector = new LtInflector;
625
+        $inflector->conf["separator"] = ".";
626
+        $requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
627
+        if (!class_exists($requestClassName))
628
+        {
629
+            trigger_error("No such dingtalk-api: " . $paramsArray["method"]);
630
+        }
631
+
632
+        $session = isset($paramsArray["session"]) ? $paramsArray["session"] : null;
633
+
634
+        $req = new $requestClassName;
635
+        foreach($paramsArray as $paraKey => $paraValue)
636
+        {
637
+            $inflector->conf["separator"] = "_";
638
+            $setterMethodName = $inflector->camelize($paraKey);
639
+            $inflector->conf["separator"] = ".";
640
+            $setterMethodName = "set" . $inflector->camelize($setterMethodName);
641
+            if (method_exists($req, $setterMethodName))
642
+            {
643
+                $req->$setterMethodName($paraValue);
644
+            }
645
+        }
646
+        return $this->execute($req, $session);
647
+    }
648
+
649
+    private function getClusterTag()
650 650
     {
651
-	    return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11);
651
+        return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11);
652 652
     }
653 653
 }
Please login to merge, or discard this patch.
Spacing   +104 added lines, -104 removed lines patch added patch discarded remove patch
@@ -23,7 +23,7 @@  discard block
 block discarded – undo
23 23
 
24 24
 	protected $sdkVersion = "dingtalk-sdk-php-20161214";
25 25
 
26
-    public function __construct($apiCallType = null, $httpMethod = null, $format = "xml"){
26
+    public function __construct($apiCallType = null, $httpMethod = null, $format = "xml") {
27 27
         $this->apiCallType = $apiCallType;
28 28
         $this->httpMethod = $httpMethod;
29 29
         $this->format = $format;
@@ -41,9 +41,9 @@  discard block
 block discarded – undo
41 41
 		if ($this->connectTimeout) {
42 42
 			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
43 43
 		}
44
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
44
+		curl_setopt($ch, CURLOPT_USERAGENT, "dingtalk-sdk-php");
45 45
 		//https 请求
46
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
46
+		if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
47 47
 			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
48 48
 			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
49 49
 		}
@@ -54,14 +54,14 @@  discard block
 block discarded – undo
54 54
 			$postMultipart = false;
55 55
 			foreach ($postFields as $k => $v)
56 56
 			{
57
-				if("@" != substr($v, 0, 1))//判断是不是文件上传
57
+				if ("@" != substr($v, 0, 1))//判断是不是文件上传
58 58
 				{
59
-					$postBodyString .= "$k=" . urlencode($v) . "&"; 
59
+					$postBodyString .= "$k=".urlencode($v)."&"; 
60 60
 				}
61 61
 				else//文件上传用multipart/form-data,否则用www-form-urlencoded
62 62
 				{
63 63
 					$postMultipart = true;
64
-					if(class_exists('\CURLFile')){
64
+					if (class_exists('\CURLFile')) {
65 65
 						$postFields[$k] = new \CURLFile(substr($v, 1));
66 66
 					}
67 67
 				}
@@ -72,7 +72,7 @@  discard block
 block discarded – undo
72 72
 			{
73 73
 				if (class_exists('\CURLFile')) {
74 74
 				    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
75
-				} else {
75
+				}else {
76 76
 				    if (defined('CURLOPT_SAFE_UPLOAD')) {
77 77
 				        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
78 78
 				    }
@@ -82,35 +82,35 @@  discard block
 block discarded – undo
82 82
 			else
83 83
 			{
84 84
 				$header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
85
-				curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
86
-				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
85
+				curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
86
+				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString, 0, -1));
87 87
 			}
88 88
 		}
89 89
 		$reponse = curl_exec($ch);
90 90
 		
91 91
 		if (curl_errno($ch))
92 92
 		{
93
-			throw new Exception(curl_error($ch),0);
93
+			throw new Exception(curl_error($ch), 0);
94 94
 		}
95 95
 		else
96 96
 		{
97 97
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
98 98
 			if (200 !== $httpStatusCode)
99 99
 			{
100
-				throw new Exception($reponse,$httpStatusCode);
100
+				throw new Exception($reponse, $httpStatusCode);
101 101
 			}
102 102
 		}
103 103
 		curl_close($ch);
104 104
 		return $reponse;
105 105
 	}
106 106
 
107
-    public function curl_get($url,$apiFields = null)
107
+    public function curl_get($url, $apiFields = null)
108 108
     {
109 109
         $ch = curl_init();
110 110
 
111 111
         foreach ($apiFields as $key => $value)
112 112
         {
113
-            $url .= "&" ."$key=" . urlencode($value);
113
+            $url .= "&"."$key=".urlencode($value);
114 114
         }
115 115
 
116 116
         curl_setopt($ch, CURLOPT_URL, $url);
@@ -130,10 +130,10 @@  discard block
 block discarded – undo
130 130
             curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
131 131
         }
132 132
 
133
-        curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
133
+        curl_setopt($ch, CURLOPT_USERAGENT, "dingtalk-sdk-php");
134 134
 
135 135
         //https ignore ssl check ?
136
-        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" )
136
+        if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https")
137 137
         {
138 138
             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
139 139
             curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
@@ -143,14 +143,14 @@  discard block
 block discarded – undo
143 143
 
144 144
         if (curl_errno($ch))
145 145
         {
146
-            throw new Exception(curl_error($ch),0);
146
+            throw new Exception(curl_error($ch), 0);
147 147
         }
148 148
         else
149 149
         {
150 150
             $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
151 151
             if (200 !== $httpStatusCode)
152 152
             {
153
-                throw new Exception($reponse,$httpStatusCode);
153
+                throw new Exception($reponse, $httpStatusCode);
154 154
             }
155 155
         }
156 156
         curl_close($ch);
@@ -169,9 +169,9 @@  discard block
 block discarded – undo
169 169
         if ($this->connectTimeout) {
170 170
             curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
171 171
         }
172
-        curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
172
+        curl_setopt($ch, CURLOPT_USERAGENT, "dingtalk-sdk-php");
173 173
         //https 请求
174
-        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
174
+        if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
175 175
             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
176 176
             curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
177 177
         }
@@ -182,17 +182,17 @@  discard block
 block discarded – undo
182 182
             $postMultipart = false;
183 183
             foreach ($postFields as $k => $v)
184 184
             {
185
-                if(!is_string($v)){
185
+                if (!is_string($v)) {
186 186
                     $v = json_encode($v);
187 187
                 }
188
-                if("@" != substr($v, 0, 1))//判断是不是文件上传
188
+                if ("@" != substr($v, 0, 1))//判断是不是文件上传
189 189
                 {
190
-                    $postBodyString .= "$k=" . urlencode($v) . "&";
190
+                    $postBodyString .= "$k=".urlencode($v)."&";
191 191
                 }
192 192
                 else//文件上传用multipart/form-data,否则用www-form-urlencoded
193 193
                 {
194 194
                     $postMultipart = true;
195
-                    if(class_exists('\CURLFile')){
195
+                    if (class_exists('\CURLFile')) {
196 196
                         $postFields[$k] = new \CURLFile(substr($v, 1));
197 197
                     }
198 198
                 }
@@ -203,7 +203,7 @@  discard block
 block discarded – undo
203 203
             {
204 204
                 if (class_exists('\CURLFile')) {
205 205
                     curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
206
-                } else {
206
+                }else {
207 207
                     if (defined('CURLOPT_SAFE_UPLOAD')) {
208 208
                         curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
209 209
                     }
@@ -212,7 +212,7 @@  discard block
 block discarded – undo
212 212
             }
213 213
             else {
214 214
                 $header = array("Content-Type: application/json; charset=utf-8", "Content-Length:".strlen(json_encode($postFields)));
215
-                curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
215
+                curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
216 216
                 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postFields));
217 217
             }
218 218
         }
@@ -220,14 +220,14 @@  discard block
 block discarded – undo
220 220
 
221 221
         if (curl_errno($ch))
222 222
         {
223
-            throw new Exception(curl_error($ch),0);
223
+            throw new Exception(curl_error($ch), 0);
224 224
         }
225 225
         else
226 226
         {
227 227
             $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
228 228
             if (200 !== $httpStatusCode)
229 229
             {
230
-                throw new Exception($reponse,$httpStatusCode);
230
+                throw new Exception($reponse, $httpStatusCode);
231 231
             }
232 232
         }
233 233
         curl_close($ch);
@@ -246,44 +246,44 @@  discard block
 block discarded – undo
246 246
 		if ($this->connectTimeout) {
247 247
 			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
248 248
 		}
249
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
249
+		curl_setopt($ch, CURLOPT_USERAGENT, "dingtalk-sdk-php");
250 250
 		//https 请求
251
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
251
+		if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
252 252
 			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
253 253
 			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
254 254
 		}
255 255
 		//生成分隔符
256
-		$delimiter = '-------------' . uniqid();
256
+		$delimiter = '-------------'.uniqid();
257 257
 		//先将post的普通数据生成主体字符串
258 258
 		$data = '';
259
-		if($postFields != null){
259
+		if ($postFields != null) {
260 260
 			foreach ($postFields as $name => $content) {
261
-			    $data .= "--" . $delimiter . "\r\n";
262
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"';
261
+			    $data .= "--".$delimiter."\r\n";
262
+			    $data .= 'Content-Disposition: form-data; name="'.$name.'"';
263 263
 			    //multipart/form-data 不需要urlencode,参见 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data
264
-			    $data .= "\r\n\r\n" . $content . "\r\n";
264
+			    $data .= "\r\n\r\n".$content."\r\n";
265 265
 			}
266
-			unset($name,$content);
266
+			unset($name, $content);
267 267
 		}
268 268
 
269 269
 		//将上传的文件生成主体字符串
270
-		if($fileFields != null){
270
+		if ($fileFields != null) {
271 271
 			foreach ($fileFields as $name => $file) {
272
-			    $data .= "--" . $delimiter . "\r\n";
273
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['filename'] . "\" \r\n";
274
-			    $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//多了个文档类型
272
+			    $data .= "--".$delimiter."\r\n";
273
+			    $data .= 'Content-Disposition: form-data; name="'.$name.'"; filename="'.$file['filename']."\" \r\n";
274
+			    $data .= 'Content-Type: '.$file['type']."\r\n\r\n"; //多了个文档类型
275 275
 
276
-			    $data .= $file['content'] . "\r\n";
276
+			    $data .= $file['content']."\r\n";
277 277
 			}
278
-			unset($name,$file);
278
+			unset($name, $file);
279 279
 		}
280 280
 		//主体结束的分隔符
281
-		$data .= "--" . $delimiter . "--";
281
+		$data .= "--".$delimiter."--";
282 282
 
283 283
 		curl_setopt($ch, CURLOPT_POST, true);
284
-		curl_setopt($ch, CURLOPT_HTTPHEADER , array(
285
-		    'Content-Type: multipart/form-data; boundary=' . $delimiter,
286
-		    'Content-Length: ' . strlen($data))
284
+		curl_setopt($ch, CURLOPT_HTTPHEADER, array(
285
+		    'Content-Type: multipart/form-data; boundary='.$delimiter,
286
+		    'Content-Length: '.strlen($data))
287 287
 		); 
288 288
 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
289 289
 		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
@@ -293,14 +293,14 @@  discard block
 block discarded – undo
293 293
 
294 294
 		if (curl_errno($ch))
295 295
 		{
296
-			throw new Exception(curl_error($ch),0);
296
+			throw new Exception(curl_error($ch), 0);
297 297
 		}
298 298
 		else
299 299
 		{
300 300
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
301 301
 			if (200 !== $httpStatusCode)
302 302
 			{
303
-				throw new Exception($reponse,$httpStatusCode);
303
+				throw new Exception($reponse, $httpStatusCode);
304 304
 			}
305 305
 		}
306 306
 		curl_close($ch);
@@ -311,7 +311,7 @@  discard block
 block discarded – undo
311 311
 	{
312 312
 		$localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
313 313
 		$logger = new TopLogger;
314
-		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . "_" . date("Y-m-d") . ".log";
314
+		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/').'/'."logs/top_comm_err_"."_".date("Y-m-d").".log";
315 315
 		$logger->conf["separator"] = "^_^";
316 316
 		$logData = array(
317 317
 		date("Y-m-d H:i:s"),
@@ -321,38 +321,38 @@  discard block
 block discarded – undo
321 321
 		$this->sdkVersion,
322 322
 		$requestUrl,
323 323
 		$errorCode,
324
-		str_replace("\n","",$responseTxt)
324
+		str_replace("\n", "", $responseTxt)
325 325
 		);
326 326
 		$logger->log($logData);
327 327
 	}
328 328
 
329
-    public function execute($request, $session = null,$bestUrl = null){
330
-        if(DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType){
329
+    public function execute($request, $session = null, $bestUrl = null) {
330
+        if (DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType) {
331 331
             return $this->_executeOapi($request, $session, $bestUrl, null, null, null, null);
332
-        }else{
332
+        }else {
333 333
             return $this->_execute($request, $session, $bestUrl);
334 334
         }
335 335
     }
336 336
 
337
-    public function executeWithAccessKey($request, $bestUrl = null, $accessKey, $accessSecret){
337
+    public function executeWithAccessKey($request, $bestUrl = null, $accessKey, $accessSecret) {
338 338
         return $this->executeWithCorpId($request, $bestUrl, $accessKey, $accessSecret, null, null);
339 339
     }
340 340
 
341
-    public function executeWithSuiteTicket($request,$bestUrl = null, $accessKey, $accessSecret, $suiteTicket){
342
-        return $this->executeWithCorpId($request,$bestUrl, $accessKey, $accessSecret, $suiteTicket, null);
341
+    public function executeWithSuiteTicket($request, $bestUrl = null, $accessKey, $accessSecret, $suiteTicket) {
342
+        return $this->executeWithCorpId($request, $bestUrl, $accessKey, $accessSecret, $suiteTicket, null);
343 343
     }
344 344
 
345 345
 	public function executeWithCorpId($request, $bestUrl = null, $accessKey, $accessSecret, $suiteTicket, $corpId) {
346
-        if(DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType){
347
-            return $this->_executeOapi($request, null, $bestUrl,$accessKey, $accessSecret, $suiteTicket, $corpId);
348
-        }else{
346
+        if (DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType) {
347
+            return $this->_executeOapi($request, null, $bestUrl, $accessKey, $accessSecret, $suiteTicket, $corpId);
348
+        }else {
349 349
             return $this->_execute($request, null, $bestUrl);
350 350
         }
351 351
     }
352 352
 
353
-    private function _executeOapi($request, $session = null,$bestUrl = null,$accessKey, $accessSecret, $suiteTicket, $corpId){
354
-        $result =  new ResultSet();
355
-        if($this->checkRequest) {
353
+    private function _executeOapi($request, $session = null, $bestUrl = null, $accessKey, $accessSecret, $suiteTicket, $corpId) {
354
+        $result = new ResultSet();
355
+        if ($this->checkRequest) {
356 356
             try {
357 357
                 $request->check();
358 358
             } catch (Exception $e) {
@@ -365,16 +365,16 @@  discard block
 block discarded – undo
365 365
 
366 366
         $sysParams["method"] = $request->getApiMethodName();
367 367
         //系统参数放入GET请求串
368
-        if($bestUrl){
369
-            if(strpos($bestUrl,'?') === false){
368
+        if ($bestUrl) {
369
+            if (strpos($bestUrl, '?') === false) {
370 370
                 $requestUrl = $bestUrl."?";
371
-            }else{
371
+            }else {
372 372
                 $requestUrl = $bestUrl;
373 373
             }
374
-        }else{
374
+        }else {
375 375
             $requestUrl = $this->gatewayUrl."?";
376 376
         }
377
-        if(null != $accessKey){
377
+        if (null != $accessKey) {
378 378
             $timestamp = $this->getMillisecond();
379 379
             // 验证签名有效性
380 380
             $canonicalString = $this->getCanonicalStringForIsv($timestamp, $suiteTicket);
@@ -383,17 +383,17 @@  discard block
 block discarded – undo
383 383
             $queryParams["accessKey"] = $accessKey;
384 384
             $queryParams["signature"] = $signature;
385 385
             $queryParams["timestamp"] = $timestamp+"";
386
-            if($suiteTicket != null) {
386
+            if ($suiteTicket != null) {
387 387
                 $queryParams["suiteTicket"] = $suiteTicket;
388 388
             }
389
-            if($corpId != null){
390
-                $queryParams["corpId"] =  $corpId;
389
+            if ($corpId != null) {
390
+                $queryParams["corpId"] = $corpId;
391 391
             }
392 392
             foreach ($queryParams as $queryParamKey => $queryParamValue) {
393
-                $requestUrl .= "$queryParamKey=" . urlencode($queryParamValue) . "&";
393
+                $requestUrl .= "$queryParamKey=".urlencode($queryParamValue)."&";
394 394
             }
395
-        }else{
396
-            $requestUrl .= "access_token=" . urlencode($session) . "&";
395
+        }else {
396
+            $requestUrl .= "access_token=".urlencode($session)."&";
397 397
         }
398 398
 
399 399
         $apiParams = array();
@@ -401,7 +401,7 @@  discard block
 block discarded – undo
401 401
         $apiParams = $request->getApiParas();
402 402
         $fileFields = array();
403 403
         foreach ($apiParams as $key => $value) {
404
-            if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
404
+            if (is_array($value) && array_key_exists('type', $value) && array_key_exists('content', $value)) {
405 405
                 $value['name'] = $key;
406 406
                 $fileFields[$key] = $value;
407 407
                 unset($apiParams[$key]);
@@ -414,19 +414,19 @@  discard block
 block discarded – undo
414 414
         //发起HTTP请求
415 415
         try
416 416
         {
417
-            if(count($fileFields) > 0){
417
+            if (count($fileFields) > 0) {
418 418
                 $resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
419
-            }else{
420
-                if(DingTalkConstant::$METHOD_POST == $this->httpMethod){
419
+            }else {
420
+                if (DingTalkConstant::$METHOD_POST == $this->httpMethod) {
421 421
                     $resp = $this->curl_json($requestUrl, $apiParams);
422
-                }else{
422
+                }else {
423 423
                     $resp = $this->curl_get($requestUrl, $apiParams);
424 424
                 }
425 425
             }
426 426
         }
427 427
         catch (Exception $e)
428 428
         {
429
-            $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
429
+            $this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_ERROR_".$e->getCode(), $e->getMessage());
430 430
             $result->code = $e->getCode();
431 431
             $result->msg = $e->getMessage();
432 432
             return $result;
@@ -444,7 +444,7 @@  discard block
 block discarded – undo
444 444
                 $respWellFormed = true;
445 445
             }
446 446
         }
447
-        else if("xml" == $this->format)
447
+        else if ("xml" == $this->format)
448 448
         {
449 449
             $respObject = @simplexml_load_string($resp);
450 450
             if (false !== $respObject)
@@ -456,7 +456,7 @@  discard block
 block discarded – undo
456 456
         //返回的HTTP文本不是标准JSON或者XML,记下错误日志
457 457
         if (false === $respWellFormed)
458 458
         {
459
-            $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
459
+            $this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_RESPONSE_NOT_WELL_FORMED", $resp);
460 460
             $result->code = 0;
461 461
             $result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
462 462
             return $result;
@@ -466,7 +466,7 @@  discard block
 block discarded – undo
466 466
         if (isset($respObject->code))
467 467
         {
468 468
             $logger = new TopLogger;
469
-            $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" .  "_" . date("Y-m-d") . ".log";
469
+            $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/').'/'."logs/top_biz_err_"."_".date("Y-m-d").".log";
470 470
             $logger->log(array(
471 471
                 date("Y-m-d H:i:s"),
472 472
                 $resp
@@ -477,26 +477,26 @@  discard block
 block discarded – undo
477 477
 
478 478
     private function getMillisecond() {
479 479
         list($s1, $s2) = explode(' ', microtime());
480
-        return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
480
+        return (float)sprintf('%.0f', (floatval($s1)+floatval($s2))*1000);
481 481
     }
482 482
 
483 483
     private function getCanonicalStringForIsv($timestamp, $suiteTicket) {
484 484
         $result = $timestamp;
485
-        if($suiteTicket != null) {
485
+        if ($suiteTicket != null) {
486 486
             $result .= "\n".$suiteTicket;
487 487
         }
488 488
         return $result;
489 489
     }
490 490
 
491
-    private function computeSignature($accessSecret, $canonicalString){
491
+    private function computeSignature($accessSecret, $canonicalString) {
492 492
         $s = hash_hmac('sha256', $canonicalString, $accessSecret, true);
493 493
         return base64_encode($s);
494 494
     }
495 495
 
496
-    private function _execute($request, $session = null,$bestUrl = null)
496
+    private function _execute($request, $session = null, $bestUrl = null)
497 497
 	{
498
-		$result =  new ResultSet(); 
499
-		if($this->checkRequest) {
498
+		$result = new ResultSet(); 
499
+		if ($this->checkRequest) {
500 500
 			try {
501 501
 				$request->check();
502 502
 			} catch (Exception $e) {
@@ -521,14 +521,14 @@  discard block
 block discarded – undo
521 521
 
522 522
 
523 523
 		//系统参数放入GET请求串
524
-		if($bestUrl){
525
-            if(strpos($bestUrl,'?') === false){
524
+		if ($bestUrl) {
525
+            if (strpos($bestUrl, '?') === false) {
526 526
                 $requestUrl = $bestUrl."?";
527
-            }else{
527
+            }else {
528 528
                 $requestUrl = $bestUrl;
529 529
             }
530 530
 			$sysParams["partner_id"] = $this->getClusterTag();
531
-		}else{
531
+		}else {
532 532
 			$requestUrl = $this->gatewayUrl."?";
533 533
 			$sysParams["partner_id"] = $this->sdkVersion;
534 534
 		}
@@ -536,12 +536,12 @@  discard block
 block discarded – undo
536 536
 		foreach ($sysParams as $sysParamKey => $sysParamValue)
537 537
 		{
538 538
 			// if(strcmp($sysParamKey,"timestamp") != 0)
539
-			$requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";
539
+			$requestUrl .= "$sysParamKey=".urlencode($sysParamValue)."&";
540 540
 		}
541 541
 
542 542
 		$fileFields = array();
543 543
 		foreach ($apiParams as $key => $value) {
544
-			if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
544
+			if (is_array($value) && array_key_exists('type', $value) && array_key_exists('content', $value)) {
545 545
 				$value['name'] = $key;
546 546
 				$fileFields[$key] = $value;
547 547
 				unset($apiParams[$key]);
@@ -554,15 +554,15 @@  discard block
 block discarded – undo
554 554
 		//发起HTTP请求
555 555
 		try
556 556
 		{
557
-			if(count($fileFields) > 0){
557
+			if (count($fileFields) > 0) {
558 558
 				$resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
559
-			}else{
559
+			}else {
560 560
 				$resp = $this->curl($requestUrl, $apiParams);
561 561
 			}
562 562
 		}
563 563
 		catch (Exception $e)
564 564
 		{
565
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
565
+			$this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_ERROR_".$e->getCode(), $e->getMessage());
566 566
 			$result->code = $e->getCode();
567 567
 			$result->msg = $e->getMessage();
568 568
 			return $result;
@@ -584,7 +584,7 @@  discard block
 block discarded – undo
584 584
 				}
585 585
 			}
586 586
 		}
587
-		else if("xml" == $this->format)
587
+		else if ("xml" == $this->format)
588 588
 		{
589 589
 			$respObject = @simplexml_load_string($resp);
590 590
 			if (false !== $respObject)
@@ -596,7 +596,7 @@  discard block
 block discarded – undo
596 596
 		//返回的HTTP文本不是标准JSON或者XML,记下错误日志
597 597
 		if (false === $respWellFormed)
598 598
 		{
599
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
599
+			$this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_RESPONSE_NOT_WELL_FORMED", $resp);
600 600
 			$result->code = 0;
601 601
 			$result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
602 602
 			return $result;
@@ -606,7 +606,7 @@  discard block
 block discarded – undo
606 606
 		if (isset($respObject->code))
607 607
 		{
608 608
 			$logger = new TopLogger;
609
-			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" .  "_" . date("Y-m-d") . ".log";
609
+			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/').'/'."logs/top_biz_err_"."_".date("Y-m-d").".log";
610 610
 			$logger->log(array(
611 611
 				date("Y-m-d H:i:s"),
612 612
 				$resp
@@ -623,21 +623,21 @@  discard block
 block discarded – undo
623 623
 		}
624 624
 		$inflector = new LtInflector;
625 625
 		$inflector->conf["separator"] = ".";
626
-		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
626
+		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7)))."Request";
627 627
 		if (!class_exists($requestClassName))
628 628
 		{
629
-			trigger_error("No such dingtalk-api: " . $paramsArray["method"]);
629
+			trigger_error("No such dingtalk-api: ".$paramsArray["method"]);
630 630
 		}
631 631
 
632 632
 		$session = isset($paramsArray["session"]) ? $paramsArray["session"] : null;
633 633
 
634 634
 		$req = new $requestClassName;
635
-		foreach($paramsArray as $paraKey => $paraValue)
635
+		foreach ($paramsArray as $paraKey => $paraValue)
636 636
 		{
637 637
 			$inflector->conf["separator"] = "_";
638 638
 			$setterMethodName = $inflector->camelize($paraKey);
639 639
 			$inflector->conf["separator"] = ".";
640
-			$setterMethodName = "set" . $inflector->camelize($setterMethodName);
640
+			$setterMethodName = "set".$inflector->camelize($setterMethodName);
641 641
 			if (method_exists($req, $setterMethodName))
642 642
 			{
643 643
 				$req->$setterMethodName($paraValue);
@@ -648,6 +648,6 @@  discard block
 block discarded – undo
648 648
 
649 649
 	private function getClusterTag()
650 650
     {
651
-	    return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11);
651
+	    return substr($this->sdkVersion, 0, 11)."-cluster".substr($this->sdkVersion, 11);
652 652
     }
653 653
 }
Please login to merge, or discard this patch.
Braces   +27 added lines, -35 removed lines patch added patch discarded remove patch
@@ -54,11 +54,12 @@  discard block
 block discarded – undo
54 54
 			$postMultipart = false;
55 55
 			foreach ($postFields as $k => $v)
56 56
 			{
57
-				if("@" != substr($v, 0, 1))//判断是不是文件上传
57
+				if("@" != substr($v, 0, 1)) {
58
+				    //判断是不是文件上传
58 59
 				{
59
-					$postBodyString .= "$k=" . urlencode($v) . "&"; 
60
+					$postBodyString .= "$k=" . urlencode($v) . "&";
60 61
 				}
61
-				else//文件上传用multipart/form-data,否则用www-form-urlencoded
62
+				} else//文件上传用multipart/form-data,否则用www-form-urlencoded
62 63
 				{
63 64
 					$postMultipart = true;
64 65
 					if(class_exists('\CURLFile')){
@@ -78,8 +79,7 @@  discard block
 block discarded – undo
78 79
 				    }
79 80
 				}
80 81
 				curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
81
-			}
82
-			else
82
+			} else
83 83
 			{
84 84
 				$header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
85 85
 				curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
@@ -91,8 +91,7 @@  discard block
 block discarded – undo
91 91
 		if (curl_errno($ch))
92 92
 		{
93 93
 			throw new Exception(curl_error($ch),0);
94
-		}
95
-		else
94
+		} else
96 95
 		{
97 96
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
98 97
 			if (200 !== $httpStatusCode)
@@ -144,8 +143,7 @@  discard block
 block discarded – undo
144 143
         if (curl_errno($ch))
145 144
         {
146 145
             throw new Exception(curl_error($ch),0);
147
-        }
148
-        else
146
+        } else
149 147
         {
150 148
             $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
151 149
             if (200 !== $httpStatusCode)
@@ -185,11 +183,12 @@  discard block
 block discarded – undo
185 183
                 if(!is_string($v)){
186 184
                     $v = json_encode($v);
187 185
                 }
188
-                if("@" != substr($v, 0, 1))//判断是不是文件上传
186
+                if("@" != substr($v, 0, 1)) {
187
+                    //判断是不是文件上传
189 188
                 {
190 189
                     $postBodyString .= "$k=" . urlencode($v) . "&";
191 190
                 }
192
-                else//文件上传用multipart/form-data,否则用www-form-urlencoded
191
+                } else//文件上传用multipart/form-data,否则用www-form-urlencoded
193 192
                 {
194 193
                     $postMultipart = true;
195 194
                     if(class_exists('\CURLFile')){
@@ -209,8 +208,7 @@  discard block
 block discarded – undo
209 208
                     }
210 209
                 }
211 210
                 curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
212
-            }
213
-            else {
211
+            } else {
214 212
                 $header = array("Content-Type: application/json; charset=utf-8", "Content-Length:".strlen(json_encode($postFields)));
215 213
                 curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
216 214
                 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postFields));
@@ -221,8 +219,7 @@  discard block
 block discarded – undo
221 219
         if (curl_errno($ch))
222 220
         {
223 221
             throw new Exception(curl_error($ch),0);
224
-        }
225
-        else
222
+        } else
226 223
         {
227 224
             $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
228 225
             if (200 !== $httpStatusCode)
@@ -294,8 +291,7 @@  discard block
 block discarded – undo
294 291
 		if (curl_errno($ch))
295 292
 		{
296 293
 			throw new Exception(curl_error($ch),0);
297
-		}
298
-		else
294
+		} else
299 295
 		{
300 296
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
301 297
 			if (200 !== $httpStatusCode)
@@ -329,7 +325,7 @@  discard block
 block discarded – undo
329 325
     public function execute($request, $session = null,$bestUrl = null){
330 326
         if(DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType){
331 327
             return $this->_executeOapi($request, $session, $bestUrl, null, null, null, null);
332
-        }else{
328
+        } else{
333 329
             return $this->_execute($request, $session, $bestUrl);
334 330
         }
335 331
     }
@@ -345,7 +341,7 @@  discard block
 block discarded – undo
345 341
 	public function executeWithCorpId($request, $bestUrl = null, $accessKey, $accessSecret, $suiteTicket, $corpId) {
346 342
         if(DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType){
347 343
             return $this->_executeOapi($request, null, $bestUrl,$accessKey, $accessSecret, $suiteTicket, $corpId);
348
-        }else{
344
+        } else{
349 345
             return $this->_execute($request, null, $bestUrl);
350 346
         }
351 347
     }
@@ -368,10 +364,10 @@  discard block
 block discarded – undo
368 364
         if($bestUrl){
369 365
             if(strpos($bestUrl,'?') === false){
370 366
                 $requestUrl = $bestUrl."?";
371
-            }else{
367
+            } else{
372 368
                 $requestUrl = $bestUrl;
373 369
             }
374
-        }else{
370
+        } else{
375 371
             $requestUrl = $this->gatewayUrl."?";
376 372
         }
377 373
         if(null != $accessKey){
@@ -392,7 +388,7 @@  discard block
 block discarded – undo
392 388
             foreach ($queryParams as $queryParamKey => $queryParamValue) {
393 389
                 $requestUrl .= "$queryParamKey=" . urlencode($queryParamValue) . "&";
394 390
             }
395
-        }else{
391
+        } else{
396 392
             $requestUrl .= "access_token=" . urlencode($session) . "&";
397 393
         }
398 394
 
@@ -416,15 +412,14 @@  discard block
 block discarded – undo
416 412
         {
417 413
             if(count($fileFields) > 0){
418 414
                 $resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
419
-            }else{
415
+            } else{
420 416
                 if(DingTalkConstant::$METHOD_POST == $this->httpMethod){
421 417
                     $resp = $this->curl_json($requestUrl, $apiParams);
422
-                }else{
418
+                } else{
423 419
                     $resp = $this->curl_get($requestUrl, $apiParams);
424 420
                 }
425 421
             }
426
-        }
427
-        catch (Exception $e)
422
+        } catch (Exception $e)
428 423
         {
429 424
             $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
430 425
             $result->code = $e->getCode();
@@ -443,8 +438,7 @@  discard block
 block discarded – undo
443 438
             {
444 439
                 $respWellFormed = true;
445 440
             }
446
-        }
447
-        else if("xml" == $this->format)
441
+        } else if("xml" == $this->format)
448 442
         {
449 443
             $respObject = @simplexml_load_string($resp);
450 444
             if (false !== $respObject)
@@ -524,11 +518,11 @@  discard block
 block discarded – undo
524 518
 		if($bestUrl){
525 519
             if(strpos($bestUrl,'?') === false){
526 520
                 $requestUrl = $bestUrl."?";
527
-            }else{
521
+            } else{
528 522
                 $requestUrl = $bestUrl;
529 523
             }
530 524
 			$sysParams["partner_id"] = $this->getClusterTag();
531
-		}else{
525
+		} else{
532 526
 			$requestUrl = $this->gatewayUrl."?";
533 527
 			$sysParams["partner_id"] = $this->sdkVersion;
534 528
 		}
@@ -556,11 +550,10 @@  discard block
 block discarded – undo
556 550
 		{
557 551
 			if(count($fileFields) > 0){
558 552
 				$resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
559
-			}else{
553
+			} else{
560 554
 				$resp = $this->curl($requestUrl, $apiParams);
561 555
 			}
562
-		}
563
-		catch (Exception $e)
556
+		} catch (Exception $e)
564 557
 		{
565 558
 			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
566 559
 			$result->code = $e->getCode();
@@ -583,8 +576,7 @@  discard block
 block discarded – undo
583 576
 					$respObject = $propValue;
584 577
 				}
585 578
 			}
586
-		}
587
-		else if("xml" == $this->format)
579
+		} else if("xml" == $this->format)
588 580
 		{
589 581
 			$respObject = @simplexml_load_string($resp);
590 582
 			if (false !== $respObject)
Please login to merge, or discard this patch.
src/service/taobao/bin/TopSdk.php 1 patch
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  */
16 16
 if (!defined("TOP_SDK_WORK_DIR"))
17 17
 {
18
-	define("TOP_SDK_WORK_DIR", "/tmp/");
18
+    define("TOP_SDK_WORK_DIR", "/tmp/");
19 19
 }
20 20
 
21 21
 /**
@@ -25,12 +25,12 @@  discard block
 block discarded – undo
25 25
  */
26 26
 if (!defined("TOP_SDK_DEV_MODE"))
27 27
 {
28
-	define("TOP_SDK_DEV_MODE", true);
28
+    define("TOP_SDK_DEV_MODE", true);
29 29
 }
30 30
 
31 31
 if (!defined("TOP_AUTOLOADER_PATH"))
32 32
 {
33
-	define("TOP_AUTOLOADER_PATH", dirname(__FILE__));
33
+    define("TOP_AUTOLOADER_PATH", dirname(__FILE__));
34 34
 }
35 35
 
36 36
 /**
Please login to merge, or discard this patch.
src/service/taobao/bin/OapiTest.php 1 patch
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -2,11 +2,11 @@
 block discarded – undo
2 2
 include "TopSdk.php";
3 3
 date_default_timezone_set('Asia/Shanghai');
4 4
 
5
-$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_POST , DingTalkConstant::$FORMAT_JSON);
5
+$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_POST, DingTalkConstant::$FORMAT_JSON);
6 6
 $req = new OapiMediaUploadRequest;
7 7
 $req->setType("image");
8
-$req->setMedia(array('type'=>'application/octet-stream','filename'=>'image.png', 'content' => file_get_contents('/Users/test/image.png')));
9
-$resp=$c->execute($req, "******","https://oapi.dingtalk.com/media/upload");
8
+$req->setMedia(array('type'=>'application/octet-stream', 'filename'=>'image.png', 'content' => file_get_contents('/Users/test/image.png')));
9
+$resp = $c->execute($req, "******", "https://oapi.dingtalk.com/media/upload");
10 10
 var_dump($resp)
11 11
 
12 12
 ?>
13 13
\ No newline at end of file
Please login to merge, or discard this patch.
src/service/taobao/bin/QimenCloud/QimenCloudClient.php 3 patches
Indentation   +375 added lines, -375 removed lines patch added patch discarded remove patch
@@ -1,384 +1,384 @@
 block discarded – undo
1 1
 <?php
2 2
 class QimenCloudClient
3 3
 {
4
-	public $appkey;
4
+    public $appkey;
5 5
 
6
-	public $secretKey;
6
+    public $secretKey;
7 7
 	
8
-	public $targetAppkey = "";
9
-
10
-	public $gatewayUrl = null;
11
-
12
-	public $format = "xml";
13
-
14
-	public $connectTimeout;
15
-
16
-	public $readTimeout;
17
-
18
-	/** 是否打开入参check**/
19
-	public $checkRequest = true;
20
-
21
-	protected $signMethod = "md5";
22
-
23
-	protected $apiVersion = "2.0";
24
-
25
-	protected $sdkVersion = "top-sdk-php-20151012";
26
-
27
-	public function getAppkey()
28
-	{
29
-		return $this->appkey;
30
-	}
31
-
32
-	public function __construct($appkey = "",$secretKey = ""){
33
-		$this->appkey = $appkey;
34
-		$this->secretKey = $secretKey ;
35
-	}
36
-
37
-	protected function generateSign($params)
38
-	{
39
-		ksort($params);
40
-
41
-		$stringToBeSigned = $this->secretKey;
42
-		foreach ($params as $k => $v)
43
-		{
44
-			if(!is_array($v) && "@" != substr($v, 0, 1))
45
-			{
46
-				$stringToBeSigned .= "$k$v";
47
-			}
48
-		}
49
-		unset($k, $v);
50
-		$stringToBeSigned .= $this->secretKey;
51
-
52
-		return strtoupper(md5($stringToBeSigned));
53
-	}
54
-
55
-	public function curl($url, $postFields = null)
56
-	{
57
-		$ch = curl_init();
58
-		curl_setopt($ch, CURLOPT_URL, $url);
59
-		curl_setopt($ch, CURLOPT_FAILONERROR, false);
60
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
61
-		if ($this->readTimeout) {
62
-			curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
63
-		}
64
-		if ($this->connectTimeout) {
65
-			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
66
-		}
67
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
68
-		//https 请求
69
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
70
-			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
71
-			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
72
-		}
73
-
74
-		if (is_array($postFields) && 0 < count($postFields))
75
-		{
76
-			$postBodyString = "";
77
-			$postMultipart = false;
78
-			foreach ($postFields as $k => $v)
79
-			{
80
-				if("@" != substr($v, 0, 1))//判断是不是文件上传
81
-				{
82
-					$postBodyString .= "$k=" . urlencode($v) . "&"; 
83
-				}
84
-				else//文件上传用multipart/form-data,否则用www-form-urlencoded
85
-				{
86
-					$postMultipart = true;
87
-					if(class_exists('\CURLFile')){
88
-						$postFields[$k] = new \CURLFile(substr($v, 1));
89
-					}
90
-				}
91
-			}
92
-			unset($k, $v);
93
-			curl_setopt($ch, CURLOPT_POST, true);
94
-			if ($postMultipart)
95
-			{
96
-				if (class_exists('\CURLFile')) {
97
-				    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
98
-				} else {
99
-				    if (defined('CURLOPT_SAFE_UPLOAD')) {
100
-				        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
101
-				    }
102
-				}
103
-				curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
104
-			}
105
-			else
106
-			{
107
-				$header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
108
-				curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
109
-				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
110
-			}
111
-		}
112
-		$reponse = curl_exec($ch);
8
+    public $targetAppkey = "";
9
+
10
+    public $gatewayUrl = null;
11
+
12
+    public $format = "xml";
13
+
14
+    public $connectTimeout;
15
+
16
+    public $readTimeout;
17
+
18
+    /** 是否打开入参check**/
19
+    public $checkRequest = true;
20
+
21
+    protected $signMethod = "md5";
22
+
23
+    protected $apiVersion = "2.0";
24
+
25
+    protected $sdkVersion = "top-sdk-php-20151012";
26
+
27
+    public function getAppkey()
28
+    {
29
+        return $this->appkey;
30
+    }
31
+
32
+    public function __construct($appkey = "",$secretKey = ""){
33
+        $this->appkey = $appkey;
34
+        $this->secretKey = $secretKey ;
35
+    }
36
+
37
+    protected function generateSign($params)
38
+    {
39
+        ksort($params);
40
+
41
+        $stringToBeSigned = $this->secretKey;
42
+        foreach ($params as $k => $v)
43
+        {
44
+            if(!is_array($v) && "@" != substr($v, 0, 1))
45
+            {
46
+                $stringToBeSigned .= "$k$v";
47
+            }
48
+        }
49
+        unset($k, $v);
50
+        $stringToBeSigned .= $this->secretKey;
51
+
52
+        return strtoupper(md5($stringToBeSigned));
53
+    }
54
+
55
+    public function curl($url, $postFields = null)
56
+    {
57
+        $ch = curl_init();
58
+        curl_setopt($ch, CURLOPT_URL, $url);
59
+        curl_setopt($ch, CURLOPT_FAILONERROR, false);
60
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
61
+        if ($this->readTimeout) {
62
+            curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
63
+        }
64
+        if ($this->connectTimeout) {
65
+            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
66
+        }
67
+        curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
68
+        //https 请求
69
+        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
70
+            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
71
+            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
72
+        }
73
+
74
+        if (is_array($postFields) && 0 < count($postFields))
75
+        {
76
+            $postBodyString = "";
77
+            $postMultipart = false;
78
+            foreach ($postFields as $k => $v)
79
+            {
80
+                if("@" != substr($v, 0, 1))//判断是不是文件上传
81
+                {
82
+                    $postBodyString .= "$k=" . urlencode($v) . "&"; 
83
+                }
84
+                else//文件上传用multipart/form-data,否则用www-form-urlencoded
85
+                {
86
+                    $postMultipart = true;
87
+                    if(class_exists('\CURLFile')){
88
+                        $postFields[$k] = new \CURLFile(substr($v, 1));
89
+                    }
90
+                }
91
+            }
92
+            unset($k, $v);
93
+            curl_setopt($ch, CURLOPT_POST, true);
94
+            if ($postMultipart)
95
+            {
96
+                if (class_exists('\CURLFile')) {
97
+                    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
98
+                } else {
99
+                    if (defined('CURLOPT_SAFE_UPLOAD')) {
100
+                        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
101
+                    }
102
+                }
103
+                curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
104
+            }
105
+            else
106
+            {
107
+                $header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
108
+                curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
109
+                curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
110
+            }
111
+        }
112
+        $reponse = curl_exec($ch);
113 113
 		
114
-		if (curl_errno($ch))
115
-		{
116
-			throw new Exception(curl_error($ch),0);
117
-		}
118
-		else
119
-		{
120
-			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
121
-			if (200 !== $httpStatusCode)
122
-			{
123
-				throw new Exception($reponse,$httpStatusCode);
124
-			}
125
-		}
126
-		curl_close($ch);
127
-		return $reponse;
128
-	}
129
-	public function curl_with_memory_file($url, $postFields = null, $fileFields = null)
130
-	{
131
-		$ch = curl_init();
132
-		curl_setopt($ch, CURLOPT_URL, $url);
133
-		curl_setopt($ch, CURLOPT_FAILONERROR, false);
134
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
135
-		if ($this->readTimeout) {
136
-			curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
137
-		}
138
-		if ($this->connectTimeout) {
139
-			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
140
-		}
141
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
142
-		//https 请求
143
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
144
-			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
145
-			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
146
-		}
147
-		//生成分隔符
148
-		$delimiter = '-------------' . uniqid();
149
-		//先将post的普通数据生成主体字符串
150
-		$data = '';
151
-		if($postFields != null){
152
-			foreach ($postFields as $name => $content) {
153
-			    $data .= "--" . $delimiter . "\r\n";
154
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"';
155
-			    //multipart/form-data 不需要urlencode,参见 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data
156
-			    $data .= "\r\n\r\n" . $content . "\r\n";
157
-			}
158
-			unset($name,$content);
159
-		}
160
-
161
-		//将上传的文件生成主体字符串
162
-		if($fileFields != null){
163
-			foreach ($fileFields as $name => $file) {
164
-			    $data .= "--" . $delimiter . "\r\n";
165
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['name'] . "\" \r\n";
166
-			    $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//多了个文档类型
167
-
168
-			    $data .= $file['content'] . "\r\n";
169
-			}
170
-			unset($name,$file);
171
-		}
172
-		//主体结束的分隔符
173
-		$data .= "--" . $delimiter . "--";
174
-
175
-		curl_setopt($ch, CURLOPT_POST, true);
176
-		curl_setopt($ch, CURLOPT_HTTPHEADER , array(
177
-		    'Content-Type: multipart/form-data; boundary=' . $delimiter,
178
-		    'Content-Length: ' . strlen($data))
179
-		); 
180
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
181
-		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
182
-
183
-		$reponse = curl_exec($ch);
184
-		unset($data);
185
-
186
-		if (curl_errno($ch))
187
-		{
188
-			throw new Exception(curl_error($ch),0);
189
-		}
190
-		else
191
-		{
192
-			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
193
-			if (200 !== $httpStatusCode)
194
-			{
195
-				throw new Exception($reponse,$httpStatusCode);
196
-			}
197
-		}
198
-		curl_close($ch);
199
-		return $reponse;
200
-	}
201
-
202
-	protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt)
203
-	{
204
-		$localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
205
-		$logger = new TopLogger;
206
-		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
207
-		$logger->conf["separator"] = "^_^";
208
-		$logData = array(
209
-		date("Y-m-d H:i:s"),
210
-		$apiName,
211
-		$this->appkey,
212
-		$localIp,
213
-		PHP_OS,
214
-		$this->sdkVersion,
215
-		$requestUrl,
216
-		$errorCode,
217
-		str_replace("\n","",$responseTxt)
218
-		);
219
-		$logger->log($logData);
220
-	}
221
-
222
-	public function execute($request, $session = null,$bestUrl = null)
223
-	{
224
-		if($this->gatewayUrl == null) {
225
-			throw new Exception("client-check-error:Need Set gatewayUrl.", 40);
226
-		}
227
-
228
-		$result =  new ResultSet(); 
229
-		if($this->checkRequest) {
230
-			try {
231
-				$request->check();
232
-			} catch (Exception $e) {
233
-
234
-				$result->code = $e->getCode();
235
-				$result->msg = $e->getMessage();
236
-				return $result;
237
-			}
238
-		}
239
-		//组装系统参数
240
-		$sysParams["app_key"] = $this->appkey;
241
-		$sysParams["v"] = $this->apiVersion;
242
-		$sysParams["format"] = $this->format;
243
-		$sysParams["sign_method"] = $this->signMethod;
244
-		$sysParams["method"] = $request->getApiMethodName();
245
-		$sysParams["timestamp"] = date("Y-m-d H:i:s");
246
-		$sysParams["target_app_key"] = $this->targetAppkey;
247
-		if (null != $session)
248
-		{
249
-			$sysParams["session"] = $session;
250
-		}
251
-		$apiParams = array();
252
-		//获取业务参数
253
-		$apiParams = $request->getApiParas();
254
-
255
-
256
-		//系统参数放入GET请求串
257
-		if($bestUrl){
258
-			$requestUrl = $bestUrl."?";
259
-			$sysParams["partner_id"] = $this->getClusterTag();
260
-		}else{
261
-			$requestUrl = $this->gatewayUrl."?";
262
-			$sysParams["partner_id"] = $this->sdkVersion;
263
-		}
264
-		//签名
265
-		$sysParams["sign"] = $this->generateSign(array_merge($apiParams, $sysParams));
266
-
267
-		foreach ($sysParams as $sysParamKey => $sysParamValue)
268
-		{
269
-			// if(strcmp($sysParamKey,"timestamp") != 0)
270
-			$requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";
271
-		}
272
-
273
-		$fileFields = array();
274
-		foreach ($apiParams as $key => $value) {
275
-			if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
276
-				$value['name'] = $key;
277
-				$fileFields[$key] = $value;
278
-				unset($apiParams[$key]);
279
-			}
280
-		}
281
-
282
-		// $requestUrl .= "timestamp=" . urlencode($sysParams["timestamp"]) . "&";
283
-		$requestUrl = substr($requestUrl, 0, -1);
284
-
285
-		//发起HTTP请求
286
-		try
287
-		{
288
-			if(count($fileFields) > 0){
289
-				$resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
290
-			}else{
291
-				$resp = $this->curl($requestUrl, $apiParams);
292
-			}
293
-		}
294
-		catch (Exception $e)
295
-		{
296
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
297
-			$result->code = $e->getCode();
298
-			$result->msg = $e->getMessage();
299
-			return $result;
300
-		}
301
-
302
-		unset($apiParams);
303
-		unset($fileFields);
304
-		//解析TOP返回结果
305
-		$respWellFormed = false;
306
-		if ("json" == $this->format)
307
-		{
308
-			$respObject = json_decode($resp);
309
-			if (null !== $respObject)
310
-			{
311
-				$respWellFormed = true;
312
-				foreach ($respObject as $propKey => $propValue)
313
-				{
314
-					$respObject = $propValue;
315
-				}
316
-			}
317
-		}
318
-		else if("xml" == $this->format)
319
-		{
320
-			$respObject = @simplexml_load_string($resp);
321
-			if (false !== $respObject)
322
-			{
323
-				$respWellFormed = true;
324
-			}
325
-		}
326
-
327
-		//返回的HTTP文本不是标准JSON或者XML,记下错误日志
328
-		if (false === $respWellFormed)
329
-		{
330
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
331
-			$result->code = 0;
332
-			$result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
333
-			return $result;
334
-		}
335
-
336
-		//如果TOP返回了错误码,记录到业务错误日志中
337
-		if (isset($respObject->code))
338
-		{
339
-			$logger = new TopLogger;
340
-			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
341
-			$logger->log(array(
342
-				date("Y-m-d H:i:s"),
343
-				$resp
344
-			));
345
-		}
346
-		return $respObject;
347
-	}
348
-
349
-	public function exec($paramsArray)
350
-	{
351
-		if (!isset($paramsArray["method"]))
352
-		{
353
-			trigger_error("No api name passed");
354
-		}
355
-		$inflector = new LtInflector;
356
-		$inflector->conf["separator"] = ".";
357
-		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
358
-		if (!class_exists($requestClassName))
359
-		{
360
-			trigger_error("No such api: " . $paramsArray["method"]);
361
-		}
362
-
363
-		$session = isset($paramsArray["session"]) ? $paramsArray["session"] : null;
364
-
365
-		$req = new $requestClassName;
366
-		foreach($paramsArray as $paraKey => $paraValue)
367
-		{
368
-			$inflector->conf["separator"] = "_";
369
-			$setterMethodName = $inflector->camelize($paraKey);
370
-			$inflector->conf["separator"] = ".";
371
-			$setterMethodName = "set" . $inflector->camelize($setterMethodName);
372
-			if (method_exists($req, $setterMethodName))
373
-			{
374
-				$req->$setterMethodName($paraValue);
375
-			}
376
-		}
377
-		return $this->execute($req, $session);
378
-	}
379
-
380
-	private function getClusterTag()
114
+        if (curl_errno($ch))
115
+        {
116
+            throw new Exception(curl_error($ch),0);
117
+        }
118
+        else
119
+        {
120
+            $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
121
+            if (200 !== $httpStatusCode)
122
+            {
123
+                throw new Exception($reponse,$httpStatusCode);
124
+            }
125
+        }
126
+        curl_close($ch);
127
+        return $reponse;
128
+    }
129
+    public function curl_with_memory_file($url, $postFields = null, $fileFields = null)
130
+    {
131
+        $ch = curl_init();
132
+        curl_setopt($ch, CURLOPT_URL, $url);
133
+        curl_setopt($ch, CURLOPT_FAILONERROR, false);
134
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
135
+        if ($this->readTimeout) {
136
+            curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
137
+        }
138
+        if ($this->connectTimeout) {
139
+            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
140
+        }
141
+        curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
142
+        //https 请求
143
+        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
144
+            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
145
+            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
146
+        }
147
+        //生成分隔符
148
+        $delimiter = '-------------' . uniqid();
149
+        //先将post的普通数据生成主体字符串
150
+        $data = '';
151
+        if($postFields != null){
152
+            foreach ($postFields as $name => $content) {
153
+                $data .= "--" . $delimiter . "\r\n";
154
+                $data .= 'Content-Disposition: form-data; name="' . $name . '"';
155
+                //multipart/form-data 不需要urlencode,参见 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data
156
+                $data .= "\r\n\r\n" . $content . "\r\n";
157
+            }
158
+            unset($name,$content);
159
+        }
160
+
161
+        //将上传的文件生成主体字符串
162
+        if($fileFields != null){
163
+            foreach ($fileFields as $name => $file) {
164
+                $data .= "--" . $delimiter . "\r\n";
165
+                $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['name'] . "\" \r\n";
166
+                $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//多了个文档类型
167
+
168
+                $data .= $file['content'] . "\r\n";
169
+            }
170
+            unset($name,$file);
171
+        }
172
+        //主体结束的分隔符
173
+        $data .= "--" . $delimiter . "--";
174
+
175
+        curl_setopt($ch, CURLOPT_POST, true);
176
+        curl_setopt($ch, CURLOPT_HTTPHEADER , array(
177
+            'Content-Type: multipart/form-data; boundary=' . $delimiter,
178
+            'Content-Length: ' . strlen($data))
179
+        ); 
180
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
181
+        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
182
+
183
+        $reponse = curl_exec($ch);
184
+        unset($data);
185
+
186
+        if (curl_errno($ch))
187
+        {
188
+            throw new Exception(curl_error($ch),0);
189
+        }
190
+        else
191
+        {
192
+            $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
193
+            if (200 !== $httpStatusCode)
194
+            {
195
+                throw new Exception($reponse,$httpStatusCode);
196
+            }
197
+        }
198
+        curl_close($ch);
199
+        return $reponse;
200
+    }
201
+
202
+    protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt)
203
+    {
204
+        $localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
205
+        $logger = new TopLogger;
206
+        $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
207
+        $logger->conf["separator"] = "^_^";
208
+        $logData = array(
209
+        date("Y-m-d H:i:s"),
210
+        $apiName,
211
+        $this->appkey,
212
+        $localIp,
213
+        PHP_OS,
214
+        $this->sdkVersion,
215
+        $requestUrl,
216
+        $errorCode,
217
+        str_replace("\n","",$responseTxt)
218
+        );
219
+        $logger->log($logData);
220
+    }
221
+
222
+    public function execute($request, $session = null,$bestUrl = null)
223
+    {
224
+        if($this->gatewayUrl == null) {
225
+            throw new Exception("client-check-error:Need Set gatewayUrl.", 40);
226
+        }
227
+
228
+        $result =  new ResultSet(); 
229
+        if($this->checkRequest) {
230
+            try {
231
+                $request->check();
232
+            } catch (Exception $e) {
233
+
234
+                $result->code = $e->getCode();
235
+                $result->msg = $e->getMessage();
236
+                return $result;
237
+            }
238
+        }
239
+        //组装系统参数
240
+        $sysParams["app_key"] = $this->appkey;
241
+        $sysParams["v"] = $this->apiVersion;
242
+        $sysParams["format"] = $this->format;
243
+        $sysParams["sign_method"] = $this->signMethod;
244
+        $sysParams["method"] = $request->getApiMethodName();
245
+        $sysParams["timestamp"] = date("Y-m-d H:i:s");
246
+        $sysParams["target_app_key"] = $this->targetAppkey;
247
+        if (null != $session)
248
+        {
249
+            $sysParams["session"] = $session;
250
+        }
251
+        $apiParams = array();
252
+        //获取业务参数
253
+        $apiParams = $request->getApiParas();
254
+
255
+
256
+        //系统参数放入GET请求串
257
+        if($bestUrl){
258
+            $requestUrl = $bestUrl."?";
259
+            $sysParams["partner_id"] = $this->getClusterTag();
260
+        }else{
261
+            $requestUrl = $this->gatewayUrl."?";
262
+            $sysParams["partner_id"] = $this->sdkVersion;
263
+        }
264
+        //签名
265
+        $sysParams["sign"] = $this->generateSign(array_merge($apiParams, $sysParams));
266
+
267
+        foreach ($sysParams as $sysParamKey => $sysParamValue)
268
+        {
269
+            // if(strcmp($sysParamKey,"timestamp") != 0)
270
+            $requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";
271
+        }
272
+
273
+        $fileFields = array();
274
+        foreach ($apiParams as $key => $value) {
275
+            if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
276
+                $value['name'] = $key;
277
+                $fileFields[$key] = $value;
278
+                unset($apiParams[$key]);
279
+            }
280
+        }
281
+
282
+        // $requestUrl .= "timestamp=" . urlencode($sysParams["timestamp"]) . "&";
283
+        $requestUrl = substr($requestUrl, 0, -1);
284
+
285
+        //发起HTTP请求
286
+        try
287
+        {
288
+            if(count($fileFields) > 0){
289
+                $resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
290
+            }else{
291
+                $resp = $this->curl($requestUrl, $apiParams);
292
+            }
293
+        }
294
+        catch (Exception $e)
295
+        {
296
+            $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
297
+            $result->code = $e->getCode();
298
+            $result->msg = $e->getMessage();
299
+            return $result;
300
+        }
301
+
302
+        unset($apiParams);
303
+        unset($fileFields);
304
+        //解析TOP返回结果
305
+        $respWellFormed = false;
306
+        if ("json" == $this->format)
307
+        {
308
+            $respObject = json_decode($resp);
309
+            if (null !== $respObject)
310
+            {
311
+                $respWellFormed = true;
312
+                foreach ($respObject as $propKey => $propValue)
313
+                {
314
+                    $respObject = $propValue;
315
+                }
316
+            }
317
+        }
318
+        else if("xml" == $this->format)
319
+        {
320
+            $respObject = @simplexml_load_string($resp);
321
+            if (false !== $respObject)
322
+            {
323
+                $respWellFormed = true;
324
+            }
325
+        }
326
+
327
+        //返回的HTTP文本不是标准JSON或者XML,记下错误日志
328
+        if (false === $respWellFormed)
329
+        {
330
+            $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
331
+            $result->code = 0;
332
+            $result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
333
+            return $result;
334
+        }
335
+
336
+        //如果TOP返回了错误码,记录到业务错误日志中
337
+        if (isset($respObject->code))
338
+        {
339
+            $logger = new TopLogger;
340
+            $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
341
+            $logger->log(array(
342
+                date("Y-m-d H:i:s"),
343
+                $resp
344
+            ));
345
+        }
346
+        return $respObject;
347
+    }
348
+
349
+    public function exec($paramsArray)
350
+    {
351
+        if (!isset($paramsArray["method"]))
352
+        {
353
+            trigger_error("No api name passed");
354
+        }
355
+        $inflector = new LtInflector;
356
+        $inflector->conf["separator"] = ".";
357
+        $requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
358
+        if (!class_exists($requestClassName))
359
+        {
360
+            trigger_error("No such api: " . $paramsArray["method"]);
361
+        }
362
+
363
+        $session = isset($paramsArray["session"]) ? $paramsArray["session"] : null;
364
+
365
+        $req = new $requestClassName;
366
+        foreach($paramsArray as $paraKey => $paraValue)
367
+        {
368
+            $inflector->conf["separator"] = "_";
369
+            $setterMethodName = $inflector->camelize($paraKey);
370
+            $inflector->conf["separator"] = ".";
371
+            $setterMethodName = "set" . $inflector->camelize($setterMethodName);
372
+            if (method_exists($req, $setterMethodName))
373
+            {
374
+                $req->$setterMethodName($paraValue);
375
+            }
376
+        }
377
+        return $this->execute($req, $session);
378
+    }
379
+
380
+    private function getClusterTag()
381 381
     {
382
-	    return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11);
382
+        return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11);
383 383
     }
384 384
 }
Please login to merge, or discard this patch.
Spacing   +54 added lines, -54 removed lines patch added patch discarded remove patch
@@ -29,9 +29,9 @@  discard block
 block discarded – undo
29 29
 		return $this->appkey;
30 30
 	}
31 31
 
32
-	public function __construct($appkey = "",$secretKey = ""){
32
+	public function __construct($appkey = "", $secretKey = "") {
33 33
 		$this->appkey = $appkey;
34
-		$this->secretKey = $secretKey ;
34
+		$this->secretKey = $secretKey;
35 35
 	}
36 36
 
37 37
 	protected function generateSign($params)
@@ -41,7 +41,7 @@  discard block
 block discarded – undo
41 41
 		$stringToBeSigned = $this->secretKey;
42 42
 		foreach ($params as $k => $v)
43 43
 		{
44
-			if(!is_array($v) && "@" != substr($v, 0, 1))
44
+			if (!is_array($v) && "@" != substr($v, 0, 1))
45 45
 			{
46 46
 				$stringToBeSigned .= "$k$v";
47 47
 			}
@@ -64,9 +64,9 @@  discard block
 block discarded – undo
64 64
 		if ($this->connectTimeout) {
65 65
 			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
66 66
 		}
67
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
67
+		curl_setopt($ch, CURLOPT_USERAGENT, "top-sdk-php");
68 68
 		//https 请求
69
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
69
+		if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
70 70
 			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
71 71
 			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
72 72
 		}
@@ -77,14 +77,14 @@  discard block
 block discarded – undo
77 77
 			$postMultipart = false;
78 78
 			foreach ($postFields as $k => $v)
79 79
 			{
80
-				if("@" != substr($v, 0, 1))//判断是不是文件上传
80
+				if ("@" != substr($v, 0, 1))//判断是不是文件上传
81 81
 				{
82
-					$postBodyString .= "$k=" . urlencode($v) . "&"; 
82
+					$postBodyString .= "$k=".urlencode($v)."&"; 
83 83
 				}
84 84
 				else//文件上传用multipart/form-data,否则用www-form-urlencoded
85 85
 				{
86 86
 					$postMultipart = true;
87
-					if(class_exists('\CURLFile')){
87
+					if (class_exists('\CURLFile')) {
88 88
 						$postFields[$k] = new \CURLFile(substr($v, 1));
89 89
 					}
90 90
 				}
@@ -95,7 +95,7 @@  discard block
 block discarded – undo
95 95
 			{
96 96
 				if (class_exists('\CURLFile')) {
97 97
 				    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
98
-				} else {
98
+				}else {
99 99
 				    if (defined('CURLOPT_SAFE_UPLOAD')) {
100 100
 				        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
101 101
 				    }
@@ -105,22 +105,22 @@  discard block
 block discarded – undo
105 105
 			else
106 106
 			{
107 107
 				$header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
108
-				curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
109
-				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
108
+				curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
109
+				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString, 0, -1));
110 110
 			}
111 111
 		}
112 112
 		$reponse = curl_exec($ch);
113 113
 		
114 114
 		if (curl_errno($ch))
115 115
 		{
116
-			throw new Exception(curl_error($ch),0);
116
+			throw new Exception(curl_error($ch), 0);
117 117
 		}
118 118
 		else
119 119
 		{
120 120
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
121 121
 			if (200 !== $httpStatusCode)
122 122
 			{
123
-				throw new Exception($reponse,$httpStatusCode);
123
+				throw new Exception($reponse, $httpStatusCode);
124 124
 			}
125 125
 		}
126 126
 		curl_close($ch);
@@ -138,44 +138,44 @@  discard block
 block discarded – undo
138 138
 		if ($this->connectTimeout) {
139 139
 			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
140 140
 		}
141
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
141
+		curl_setopt($ch, CURLOPT_USERAGENT, "top-sdk-php");
142 142
 		//https 请求
143
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
143
+		if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
144 144
 			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
145 145
 			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
146 146
 		}
147 147
 		//生成分隔符
148
-		$delimiter = '-------------' . uniqid();
148
+		$delimiter = '-------------'.uniqid();
149 149
 		//先将post的普通数据生成主体字符串
150 150
 		$data = '';
151
-		if($postFields != null){
151
+		if ($postFields != null) {
152 152
 			foreach ($postFields as $name => $content) {
153
-			    $data .= "--" . $delimiter . "\r\n";
154
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"';
153
+			    $data .= "--".$delimiter."\r\n";
154
+			    $data .= 'Content-Disposition: form-data; name="'.$name.'"';
155 155
 			    //multipart/form-data 不需要urlencode,参见 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data
156
-			    $data .= "\r\n\r\n" . $content . "\r\n";
156
+			    $data .= "\r\n\r\n".$content."\r\n";
157 157
 			}
158
-			unset($name,$content);
158
+			unset($name, $content);
159 159
 		}
160 160
 
161 161
 		//将上传的文件生成主体字符串
162
-		if($fileFields != null){
162
+		if ($fileFields != null) {
163 163
 			foreach ($fileFields as $name => $file) {
164
-			    $data .= "--" . $delimiter . "\r\n";
165
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['name'] . "\" \r\n";
166
-			    $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//多了个文档类型
164
+			    $data .= "--".$delimiter."\r\n";
165
+			    $data .= 'Content-Disposition: form-data; name="'.$name.'"; filename="'.$file['name']."\" \r\n";
166
+			    $data .= 'Content-Type: '.$file['type']."\r\n\r\n"; //多了个文档类型
167 167
 
168
-			    $data .= $file['content'] . "\r\n";
168
+			    $data .= $file['content']."\r\n";
169 169
 			}
170
-			unset($name,$file);
170
+			unset($name, $file);
171 171
 		}
172 172
 		//主体结束的分隔符
173
-		$data .= "--" . $delimiter . "--";
173
+		$data .= "--".$delimiter."--";
174 174
 
175 175
 		curl_setopt($ch, CURLOPT_POST, true);
176
-		curl_setopt($ch, CURLOPT_HTTPHEADER , array(
177
-		    'Content-Type: multipart/form-data; boundary=' . $delimiter,
178
-		    'Content-Length: ' . strlen($data))
176
+		curl_setopt($ch, CURLOPT_HTTPHEADER, array(
177
+		    'Content-Type: multipart/form-data; boundary='.$delimiter,
178
+		    'Content-Length: '.strlen($data))
179 179
 		); 
180 180
 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
181 181
 		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
@@ -185,14 +185,14 @@  discard block
 block discarded – undo
185 185
 
186 186
 		if (curl_errno($ch))
187 187
 		{
188
-			throw new Exception(curl_error($ch),0);
188
+			throw new Exception(curl_error($ch), 0);
189 189
 		}
190 190
 		else
191 191
 		{
192 192
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
193 193
 			if (200 !== $httpStatusCode)
194 194
 			{
195
-				throw new Exception($reponse,$httpStatusCode);
195
+				throw new Exception($reponse, $httpStatusCode);
196 196
 			}
197 197
 		}
198 198
 		curl_close($ch);
@@ -203,7 +203,7 @@  discard block
 block discarded – undo
203 203
 	{
204 204
 		$localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
205 205
 		$logger = new TopLogger;
206
-		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
206
+		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/').'/'."logs/top_comm_err_".$this->appkey."_".date("Y-m-d").".log";
207 207
 		$logger->conf["separator"] = "^_^";
208 208
 		$logData = array(
209 209
 		date("Y-m-d H:i:s"),
@@ -214,19 +214,19 @@  discard block
 block discarded – undo
214 214
 		$this->sdkVersion,
215 215
 		$requestUrl,
216 216
 		$errorCode,
217
-		str_replace("\n","",$responseTxt)
217
+		str_replace("\n", "", $responseTxt)
218 218
 		);
219 219
 		$logger->log($logData);
220 220
 	}
221 221
 
222
-	public function execute($request, $session = null,$bestUrl = null)
222
+	public function execute($request, $session = null, $bestUrl = null)
223 223
 	{
224
-		if($this->gatewayUrl == null) {
224
+		if ($this->gatewayUrl == null) {
225 225
 			throw new Exception("client-check-error:Need Set gatewayUrl.", 40);
226 226
 		}
227 227
 
228
-		$result =  new ResultSet(); 
229
-		if($this->checkRequest) {
228
+		$result = new ResultSet(); 
229
+		if ($this->checkRequest) {
230 230
 			try {
231 231
 				$request->check();
232 232
 			} catch (Exception $e) {
@@ -254,10 +254,10 @@  discard block
 block discarded – undo
254 254
 
255 255
 
256 256
 		//系统参数放入GET请求串
257
-		if($bestUrl){
257
+		if ($bestUrl) {
258 258
 			$requestUrl = $bestUrl."?";
259 259
 			$sysParams["partner_id"] = $this->getClusterTag();
260
-		}else{
260
+		}else {
261 261
 			$requestUrl = $this->gatewayUrl."?";
262 262
 			$sysParams["partner_id"] = $this->sdkVersion;
263 263
 		}
@@ -267,12 +267,12 @@  discard block
 block discarded – undo
267 267
 		foreach ($sysParams as $sysParamKey => $sysParamValue)
268 268
 		{
269 269
 			// if(strcmp($sysParamKey,"timestamp") != 0)
270
-			$requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";
270
+			$requestUrl .= "$sysParamKey=".urlencode($sysParamValue)."&";
271 271
 		}
272 272
 
273 273
 		$fileFields = array();
274 274
 		foreach ($apiParams as $key => $value) {
275
-			if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
275
+			if (is_array($value) && array_key_exists('type', $value) && array_key_exists('content', $value)) {
276 276
 				$value['name'] = $key;
277 277
 				$fileFields[$key] = $value;
278 278
 				unset($apiParams[$key]);
@@ -285,15 +285,15 @@  discard block
 block discarded – undo
285 285
 		//发起HTTP请求
286 286
 		try
287 287
 		{
288
-			if(count($fileFields) > 0){
288
+			if (count($fileFields) > 0) {
289 289
 				$resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
290
-			}else{
290
+			}else {
291 291
 				$resp = $this->curl($requestUrl, $apiParams);
292 292
 			}
293 293
 		}
294 294
 		catch (Exception $e)
295 295
 		{
296
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
296
+			$this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_ERROR_".$e->getCode(), $e->getMessage());
297 297
 			$result->code = $e->getCode();
298 298
 			$result->msg = $e->getMessage();
299 299
 			return $result;
@@ -315,7 +315,7 @@  discard block
 block discarded – undo
315 315
 				}
316 316
 			}
317 317
 		}
318
-		else if("xml" == $this->format)
318
+		else if ("xml" == $this->format)
319 319
 		{
320 320
 			$respObject = @simplexml_load_string($resp);
321 321
 			if (false !== $respObject)
@@ -327,7 +327,7 @@  discard block
 block discarded – undo
327 327
 		//返回的HTTP文本不是标准JSON或者XML,记下错误日志
328 328
 		if (false === $respWellFormed)
329 329
 		{
330
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
330
+			$this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_RESPONSE_NOT_WELL_FORMED", $resp);
331 331
 			$result->code = 0;
332 332
 			$result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
333 333
 			return $result;
@@ -337,7 +337,7 @@  discard block
 block discarded – undo
337 337
 		if (isset($respObject->code))
338 338
 		{
339 339
 			$logger = new TopLogger;
340
-			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
340
+			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/').'/'."logs/top_biz_err_".$this->appkey."_".date("Y-m-d").".log";
341 341
 			$logger->log(array(
342 342
 				date("Y-m-d H:i:s"),
343 343
 				$resp
@@ -354,21 +354,21 @@  discard block
 block discarded – undo
354 354
 		}
355 355
 		$inflector = new LtInflector;
356 356
 		$inflector->conf["separator"] = ".";
357
-		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
357
+		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7)))."Request";
358 358
 		if (!class_exists($requestClassName))
359 359
 		{
360
-			trigger_error("No such api: " . $paramsArray["method"]);
360
+			trigger_error("No such api: ".$paramsArray["method"]);
361 361
 		}
362 362
 
363 363
 		$session = isset($paramsArray["session"]) ? $paramsArray["session"] : null;
364 364
 
365 365
 		$req = new $requestClassName;
366
-		foreach($paramsArray as $paraKey => $paraValue)
366
+		foreach ($paramsArray as $paraKey => $paraValue)
367 367
 		{
368 368
 			$inflector->conf["separator"] = "_";
369 369
 			$setterMethodName = $inflector->camelize($paraKey);
370 370
 			$inflector->conf["separator"] = ".";
371
-			$setterMethodName = "set" . $inflector->camelize($setterMethodName);
371
+			$setterMethodName = "set".$inflector->camelize($setterMethodName);
372 372
 			if (method_exists($req, $setterMethodName))
373 373
 			{
374 374
 				$req->$setterMethodName($paraValue);
@@ -379,6 +379,6 @@  discard block
 block discarded – undo
379 379
 
380 380
 	private function getClusterTag()
381 381
     {
382
-	    return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11);
382
+	    return substr($this->sdkVersion, 0, 11)."-cluster".substr($this->sdkVersion, 11);
383 383
     }
384 384
 }
Please login to merge, or discard this patch.
Braces   +11 added lines, -15 removed lines patch added patch discarded remove patch
@@ -77,11 +77,12 @@  discard block
 block discarded – undo
77 77
 			$postMultipart = false;
78 78
 			foreach ($postFields as $k => $v)
79 79
 			{
80
-				if("@" != substr($v, 0, 1))//判断是不是文件上传
80
+				if("@" != substr($v, 0, 1)) {
81
+				    //判断是不是文件上传
81 82
 				{
82
-					$postBodyString .= "$k=" . urlencode($v) . "&"; 
83
+					$postBodyString .= "$k=" . urlencode($v) . "&";
83 84
 				}
84
-				else//文件上传用multipart/form-data,否则用www-form-urlencoded
85
+				} else//文件上传用multipart/form-data,否则用www-form-urlencoded
85 86
 				{
86 87
 					$postMultipart = true;
87 88
 					if(class_exists('\CURLFile')){
@@ -101,8 +102,7 @@  discard block
 block discarded – undo
101 102
 				    }
102 103
 				}
103 104
 				curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
104
-			}
105
-			else
105
+			} else
106 106
 			{
107 107
 				$header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
108 108
 				curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
@@ -114,8 +114,7 @@  discard block
 block discarded – undo
114 114
 		if (curl_errno($ch))
115 115
 		{
116 116
 			throw new Exception(curl_error($ch),0);
117
-		}
118
-		else
117
+		} else
119 118
 		{
120 119
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
121 120
 			if (200 !== $httpStatusCode)
@@ -186,8 +185,7 @@  discard block
 block discarded – undo
186 185
 		if (curl_errno($ch))
187 186
 		{
188 187
 			throw new Exception(curl_error($ch),0);
189
-		}
190
-		else
188
+		} else
191 189
 		{
192 190
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
193 191
 			if (200 !== $httpStatusCode)
@@ -257,7 +255,7 @@  discard block
 block discarded – undo
257 255
 		if($bestUrl){
258 256
 			$requestUrl = $bestUrl."?";
259 257
 			$sysParams["partner_id"] = $this->getClusterTag();
260
-		}else{
258
+		} else{
261 259
 			$requestUrl = $this->gatewayUrl."?";
262 260
 			$sysParams["partner_id"] = $this->sdkVersion;
263 261
 		}
@@ -287,11 +285,10 @@  discard block
 block discarded – undo
287 285
 		{
288 286
 			if(count($fileFields) > 0){
289 287
 				$resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
290
-			}else{
288
+			} else{
291 289
 				$resp = $this->curl($requestUrl, $apiParams);
292 290
 			}
293
-		}
294
-		catch (Exception $e)
291
+		} catch (Exception $e)
295 292
 		{
296 293
 			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
297 294
 			$result->code = $e->getCode();
@@ -314,8 +311,7 @@  discard block
 block discarded – undo
314 311
 					$respObject = $propValue;
315 312
 				}
316 313
 			}
317
-		}
318
-		else if("xml" == $this->format)
314
+		} else if("xml" == $this->format)
319 315
 		{
320 316
 			$respObject = @simplexml_load_string($resp);
321 317
 			if (false !== $respObject)
Please login to merge, or discard this patch.
src/service/taobao/bin/top/test.php 1 patch
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -7,8 +7,8 @@
 block discarded – undo
7 7
 
8 8
     $req = new HttpdnsGetRequest;
9 9
 
10
-    $req->putOtherTextParam("name","test");
11
-    $req->putOtherTextParam("value",0);
10
+    $req->putOtherTextParam("name", "test");
11
+    $req->putOtherTextParam("value", 0);
12 12
 
13 13
     var_dump($c->execute($req));
14 14
 ?>
15 15
\ No newline at end of file
Please login to merge, or discard this patch.
src/service/taobao/bin/top/HttpdnsGetRequest.php 2 patches
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -2,22 +2,22 @@
 block discarded – undo
2 2
 
3 3
 class HttpdnsGetRequest
4 4
 {
5
-	private $apiParas = array();
5
+    private $apiParas = array();
6 6
 	
7
-	public function getApiMethodName()
8
-	{
9
-		return "taobao.httpdns.get";
10
-	}
7
+    public function getApiMethodName()
8
+    {
9
+        return "taobao.httpdns.get";
10
+    }
11 11
 	
12
-	public function getApiParas()
13
-	{
14
-		return $this->apiParas;
15
-	}
12
+    public function getApiParas()
13
+    {
14
+        return $this->apiParas;
15
+    }
16 16
 	
17
-	public function check(){}
17
+    public function check(){}
18 18
 	
19
-	public function putOtherTextParam($key, $value) {
20
-		$this->apiParas[$key] = $value;
21
-		$this->$key = $value;
22
-	}
19
+    public function putOtherTextParam($key, $value) {
20
+        $this->apiParas[$key] = $value;
21
+        $this->$key = $value;
22
+    }
23 23
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -14,7 +14,7 @@
 block discarded – undo
14 14
 		return $this->apiParas;
15 15
 	}
16 16
 	
17
-	public function check(){}
17
+	public function check() {}
18 18
 	
19 19
 	public function putOtherTextParam($key, $value) {
20 20
 		$this->apiParas[$key] = $value;
Please login to merge, or discard this patch.
src/service/taobao/bin/top/SpiUtils.php 3 patches
Indentation   +214 added lines, -214 removed lines patch added patch discarded remove patch
@@ -1,219 +1,219 @@
 block discarded – undo
1 1
 <?php
2 2
 class SpiUtils{
3
-	private static $top_sign_list = "HTTP_TOP_SIGN_LIST";
4
-	private static $timestamp = "timestamp";
5
-	private static $header_real_ip = array("X_Real_IP", "X_Forwarded_For", "Proxy_Client_IP",
6
-											"WL_Proxy_Client_IP", "HTTP_CLIENT_IP", "HTTP_X_FORWARDED_FOR");
7
-	/**
8
-	 * 校验SPI请求签名,适用于所有GET请求,及不包含文件参数的POST请求。
9
-	 * 
10
-	 * @param request 请求对象
11
-	 * @param secret app对应的secret
12
-	 * @return true:校验通过;false:校验不通过
13
-	 */
14
-	public static function checkSign4FormRequest($secret){
15
-		return self::checkSign(null,null,$secret);
16
-	}
17
-
18
-	/**
19
-	 * 校验SPI请求签名,适用于请求体是xml/json等可用文本表示的POST请求。
20
-	 * 
21
-	 * @param request 请求对象
22
-	 * @param body 请求体的文本内容
23
-	 * @param secret app对应的secret
24
-	 * @return true:校验通过;false:校验不通过
25
-	 */
26
-	public static function checkSign4TextRequest($body,$secret){
27
-		return self::checkSign(null,$body,$secret);
28
-	}
3
+    private static $top_sign_list = "HTTP_TOP_SIGN_LIST";
4
+    private static $timestamp = "timestamp";
5
+    private static $header_real_ip = array("X_Real_IP", "X_Forwarded_For", "Proxy_Client_IP",
6
+                                            "WL_Proxy_Client_IP", "HTTP_CLIENT_IP", "HTTP_X_FORWARDED_FOR");
7
+    /**
8
+     * 校验SPI请求签名,适用于所有GET请求,及不包含文件参数的POST请求。
9
+     * 
10
+     * @param request 请求对象
11
+     * @param secret app对应的secret
12
+     * @return true:校验通过;false:校验不通过
13
+     */
14
+    public static function checkSign4FormRequest($secret){
15
+        return self::checkSign(null,null,$secret);
16
+    }
17
+
18
+    /**
19
+     * 校验SPI请求签名,适用于请求体是xml/json等可用文本表示的POST请求。
20
+     * 
21
+     * @param request 请求对象
22
+     * @param body 请求体的文本内容
23
+     * @param secret app对应的secret
24
+     * @return true:校验通过;false:校验不通过
25
+     */
26
+    public static function checkSign4TextRequest($body,$secret){
27
+        return self::checkSign(null,$body,$secret);
28
+    }
29 29
 	
30
-	/**
31
-	 * 校验SPI请求签名,适用于带文件上传的POST请求。
32
-	 * 
33
-	 * @param request 请求对象
34
-	 * @param form 除了文件参数以外的所有普通文本参数的map集合
35
-	 * @param secret app对应的secret
36
-	 * @return true:校验通过;false:校验不通过
37
-	 */
38
-	public static function checkSign4FileRequest($form, $secret){
39
-		return self::checkSign($form, null, $secret);
40
-	}
41
-
42
-	private static function checkSign($form, $body, $secret) {
43
-		$params = array();
44
-		// 1. 获取header参数
45
-		$headerMap = self::getHeaderMap();
46
-		foreach ($headerMap as $k => $v){
47
-			$params[$k] = $v ;
48
-		}
49
-
50
-		// 2. 获取url参数
51
-		$queryMap = self::getQueryMap();
52
-		foreach ($queryMap as $k => $v){
53
-			$params[$k] = $v ;
54
-		}
55
-
56
-		// 3. 获取form参数
57
-		if ($form == null && $body == null) {
58
-			$formMap = self::getFormMap();
59
-			foreach ($formMap as $k => $v){
60
-				$params[$k] = $v ;
61
-			}
62
-		} else if ($form != null) {
63
-			foreach ($form as $k => $v){
64
-				$params[$k] = $v ;
65
-			}
66
-		}
67
-
68
-		if($body == null){
69
-			$body = file_get_contents('php://input');
70
-		}
71
-
72
-		$remoteSign = $queryMap["sign"];
73
-		$localSign = self::sign($params, $body, $secret);
74
-		if (strcmp($remoteSign, $localSign) == 0) {
75
-			return true;
76
-		} else {
77
-			$paramStr = self::getParamStrFromMap($params);
78
-			self::logCommunicationError($remoteSign,$localSign,$paramStr,$body);
79
-			return false;
80
-		}
81
-	}
82
-
83
-	private static function getHeaderMap() {
84
-		$headerMap = array();
85
-		$signList = $_SERVER['HTTP_TOP_SIGN_LIST']; // 只获取参与签名的头部字段
86
-
87
-		if(!$signList) {
88
-			return $headerMap;
89
-		}
90
-
91
-		$signList = trim($signList);
92
-		if (strlen($signList) > 0){
93
-			$params = split(",", $signList);
94
-			foreach ($_SERVER as $k => $v){
95
-				if (substr($k, 0, 5) == 'HTTP_'){
96
-					foreach($params as $kk){
97
-						$upperkey = strtoupper($kk);
98
-						if(self::endWith($k,$upperkey)){
99
-							$headerMap[$kk] = $v;
100
-						}
101
-					}
102
-				}
103
-			}
104
-		}
105
-		return $headerMap;
106
-	}
107
-
108
-	private static function getQueryMap(){
109
-		$queryStr = $_SERVER["QUERY_STRING"];
110
-		$resultArray = array();
111
-		foreach (explode('&', $queryStr) as $pair) {
112
-		    list($key, $value) = explode('=', $pair);
113
-		    if (strpos($key, '.') !== false) {
114
-		        list($subKey, $subVal) = explode('.', $key);
115
-
116
-		        if (preg_match('/(?P<name>\w+)\[(?P<index>\w+)\]/', $subKey, $matches)) {
117
-		            $resultArray[$matches['name']][$matches['index']][$subVal] = $value;
118
-		        } else {
119
-		            $resultArray[$subKey][$subVal] = urldecode($value);
120
-		        }
121
-		    } else {
122
-		        $resultArray[$key] = urldecode($value);
123
-		    }
124
-		}
125
-		return $resultArray;
126
-	}
127
-
128
-	private static function checkRemoteIp(){
129
-		$remoteIp = $_SERVER["REMOTE_ADDR"];
130
-		foreach ($header_real_ip as $k){
131
-			$realIp = $_SERVER[$k];
132
-			$realIp = trim($realIp);
133
-			if(strlen($realIp) > 0 && strcasecmp("unknown",$realIp)){
134
-				$remoteIp = $realIp;
135
-				break;
136
-			}
137
-		}
138
-		return self::startsWith($remoteIp,"140.205.144.") || self::startsWith($remoteIp,"40.205.145.");
139
-	}
140
-
141
-	private static function getFormMap(){
142
-		$resultArray = array();
143
-		foreach($_POST as $key=>$v) { 
144
-			$resultArray[$key] = $v ;
145
-		}
146
-		return $resultArray ;	
147
-	}
148
-
149
-	private static function startsWith($haystack, $needle) {
150
-    	return $needle === "" || strpos($haystack, $needle) === 0;
151
-	}
152
-
153
-	private static function endWith($haystack, $needle) {   
154
-	    $length = strlen($needle);  
155
-	    if($length == 0)
156
-	    {    
157
-	        return true;  
158
-	    }  
159
-	    return (substr($haystack, -$length) === $needle);
160
- 	}
161
-
162
-	private static function checkTimestamp(){
163
-		$ts = $_POST['timestamp'];
164
-		if($ts){
165
-			$clientTimestamp = strtotime($ts);
166
-			$current = $_SERVER['REQUEST_TIME'];
167
-			return ($current - $clientTimestamp) <= 5*60*1000;
168
-		}else{
169
-			return false;
170
-		}
171
-	}
172
-
173
-	private static function getParamStrFromMap($params){
174
-		ksort($params);
175
-		$stringToBeSigned = "";
176
-		foreach ($params as $k => $v)
177
-		{
178
-			if(strcmp("sign", $k) != 0)
179
-			{
180
-				$stringToBeSigned .= "$k$v";
181
-			}
182
-		}
183
-		unset($k, $v);
184
-		return $stringToBeSigned;
185
-	}
186
-
187
-	private static function sign($params,$body,$secret){
188
-		ksort($params);
189
-
190
-		$stringToBeSigned = $secret;
191
-		$stringToBeSigned .= self::getParamStrFromMap($params);
192
-
193
-		if($body)
194
-			$stringToBeSigned .= $body;
195
-		$stringToBeSigned .= $secret;
196
-		return strtoupper(md5($stringToBeSigned));
197
-	}
198
-
199
-	protected static function logCommunicationError($remoteSign, $localSign, $paramStr, $body)
200
-	{
201
-		$localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
202
-		$logger = new TopLogger;
203
-		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_". date("Y-m-d") . ".log";
204
-		$logger->conf["separator"] = "^_^";
205
-		$logData = array(
206
-		"checkTopSign error" ,
207
-		"remoteSign=".$remoteSign ,
208
-		"localSign=".$localSign ,
209
-		"paramStr=".$paramStr ,
210
-		"body=".$body
211
-		);
212
-		$logger->log($logData);
213
-	}
214
-	private static function clear_blank($str, $glue='')
215
-	{
216
-		$replace = array(" ", "\r", "\n", "\t"); return str_replace($replace, $glue, $str);
217
-	}
30
+    /**
31
+     * 校验SPI请求签名,适用于带文件上传的POST请求。
32
+     * 
33
+     * @param request 请求对象
34
+     * @param form 除了文件参数以外的所有普通文本参数的map集合
35
+     * @param secret app对应的secret
36
+     * @return true:校验通过;false:校验不通过
37
+     */
38
+    public static function checkSign4FileRequest($form, $secret){
39
+        return self::checkSign($form, null, $secret);
40
+    }
41
+
42
+    private static function checkSign($form, $body, $secret) {
43
+        $params = array();
44
+        // 1. 获取header参数
45
+        $headerMap = self::getHeaderMap();
46
+        foreach ($headerMap as $k => $v){
47
+            $params[$k] = $v ;
48
+        }
49
+
50
+        // 2. 获取url参数
51
+        $queryMap = self::getQueryMap();
52
+        foreach ($queryMap as $k => $v){
53
+            $params[$k] = $v ;
54
+        }
55
+
56
+        // 3. 获取form参数
57
+        if ($form == null && $body == null) {
58
+            $formMap = self::getFormMap();
59
+            foreach ($formMap as $k => $v){
60
+                $params[$k] = $v ;
61
+            }
62
+        } else if ($form != null) {
63
+            foreach ($form as $k => $v){
64
+                $params[$k] = $v ;
65
+            }
66
+        }
67
+
68
+        if($body == null){
69
+            $body = file_get_contents('php://input');
70
+        }
71
+
72
+        $remoteSign = $queryMap["sign"];
73
+        $localSign = self::sign($params, $body, $secret);
74
+        if (strcmp($remoteSign, $localSign) == 0) {
75
+            return true;
76
+        } else {
77
+            $paramStr = self::getParamStrFromMap($params);
78
+            self::logCommunicationError($remoteSign,$localSign,$paramStr,$body);
79
+            return false;
80
+        }
81
+    }
82
+
83
+    private static function getHeaderMap() {
84
+        $headerMap = array();
85
+        $signList = $_SERVER['HTTP_TOP_SIGN_LIST']; // 只获取参与签名的头部字段
86
+
87
+        if(!$signList) {
88
+            return $headerMap;
89
+        }
90
+
91
+        $signList = trim($signList);
92
+        if (strlen($signList) > 0){
93
+            $params = split(",", $signList);
94
+            foreach ($_SERVER as $k => $v){
95
+                if (substr($k, 0, 5) == 'HTTP_'){
96
+                    foreach($params as $kk){
97
+                        $upperkey = strtoupper($kk);
98
+                        if(self::endWith($k,$upperkey)){
99
+                            $headerMap[$kk] = $v;
100
+                        }
101
+                    }
102
+                }
103
+            }
104
+        }
105
+        return $headerMap;
106
+    }
107
+
108
+    private static function getQueryMap(){
109
+        $queryStr = $_SERVER["QUERY_STRING"];
110
+        $resultArray = array();
111
+        foreach (explode('&', $queryStr) as $pair) {
112
+            list($key, $value) = explode('=', $pair);
113
+            if (strpos($key, '.') !== false) {
114
+                list($subKey, $subVal) = explode('.', $key);
115
+
116
+                if (preg_match('/(?P<name>\w+)\[(?P<index>\w+)\]/', $subKey, $matches)) {
117
+                    $resultArray[$matches['name']][$matches['index']][$subVal] = $value;
118
+                } else {
119
+                    $resultArray[$subKey][$subVal] = urldecode($value);
120
+                }
121
+            } else {
122
+                $resultArray[$key] = urldecode($value);
123
+            }
124
+        }
125
+        return $resultArray;
126
+    }
127
+
128
+    private static function checkRemoteIp(){
129
+        $remoteIp = $_SERVER["REMOTE_ADDR"];
130
+        foreach ($header_real_ip as $k){
131
+            $realIp = $_SERVER[$k];
132
+            $realIp = trim($realIp);
133
+            if(strlen($realIp) > 0 && strcasecmp("unknown",$realIp)){
134
+                $remoteIp = $realIp;
135
+                break;
136
+            }
137
+        }
138
+        return self::startsWith($remoteIp,"140.205.144.") || self::startsWith($remoteIp,"40.205.145.");
139
+    }
140
+
141
+    private static function getFormMap(){
142
+        $resultArray = array();
143
+        foreach($_POST as $key=>$v) { 
144
+            $resultArray[$key] = $v ;
145
+        }
146
+        return $resultArray ;	
147
+    }
148
+
149
+    private static function startsWith($haystack, $needle) {
150
+        return $needle === "" || strpos($haystack, $needle) === 0;
151
+    }
152
+
153
+    private static function endWith($haystack, $needle) {   
154
+        $length = strlen($needle);  
155
+        if($length == 0)
156
+        {    
157
+            return true;  
158
+        }  
159
+        return (substr($haystack, -$length) === $needle);
160
+        }
161
+
162
+    private static function checkTimestamp(){
163
+        $ts = $_POST['timestamp'];
164
+        if($ts){
165
+            $clientTimestamp = strtotime($ts);
166
+            $current = $_SERVER['REQUEST_TIME'];
167
+            return ($current - $clientTimestamp) <= 5*60*1000;
168
+        }else{
169
+            return false;
170
+        }
171
+    }
172
+
173
+    private static function getParamStrFromMap($params){
174
+        ksort($params);
175
+        $stringToBeSigned = "";
176
+        foreach ($params as $k => $v)
177
+        {
178
+            if(strcmp("sign", $k) != 0)
179
+            {
180
+                $stringToBeSigned .= "$k$v";
181
+            }
182
+        }
183
+        unset($k, $v);
184
+        return $stringToBeSigned;
185
+    }
186
+
187
+    private static function sign($params,$body,$secret){
188
+        ksort($params);
189
+
190
+        $stringToBeSigned = $secret;
191
+        $stringToBeSigned .= self::getParamStrFromMap($params);
192
+
193
+        if($body)
194
+            $stringToBeSigned .= $body;
195
+        $stringToBeSigned .= $secret;
196
+        return strtoupper(md5($stringToBeSigned));
197
+    }
198
+
199
+    protected static function logCommunicationError($remoteSign, $localSign, $paramStr, $body)
200
+    {
201
+        $localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
202
+        $logger = new TopLogger;
203
+        $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_". date("Y-m-d") . ".log";
204
+        $logger->conf["separator"] = "^_^";
205
+        $logData = array(
206
+        "checkTopSign error" ,
207
+        "remoteSign=".$remoteSign ,
208
+        "localSign=".$localSign ,
209
+        "paramStr=".$paramStr ,
210
+        "body=".$body
211
+        );
212
+        $logger->log($logData);
213
+    }
214
+    private static function clear_blank($str, $glue='')
215
+    {
216
+        $replace = array(" ", "\r", "\n", "\t"); return str_replace($replace, $glue, $str);
217
+    }
218 218
 }
219 219
 ?>
220 220
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +50 added lines, -50 removed lines patch added patch discarded remove patch
@@ -1,5 +1,5 @@  discard block
 block discarded – undo
1 1
 <?php
2
-class SpiUtils{
2
+class SpiUtils {
3 3
 	private static $top_sign_list = "HTTP_TOP_SIGN_LIST";
4 4
 	private static $timestamp = "timestamp";
5 5
 	private static $header_real_ip = array("X_Real_IP", "X_Forwarded_For", "Proxy_Client_IP",
@@ -11,8 +11,8 @@  discard block
 block discarded – undo
11 11
 	 * @param secret app对应的secret
12 12
 	 * @return true:校验通过;false:校验不通过
13 13
 	 */
14
-	public static function checkSign4FormRequest($secret){
15
-		return self::checkSign(null,null,$secret);
14
+	public static function checkSign4FormRequest($secret) {
15
+		return self::checkSign(null, null, $secret);
16 16
 	}
17 17
 
18 18
 	/**
@@ -23,8 +23,8 @@  discard block
 block discarded – undo
23 23
 	 * @param secret app对应的secret
24 24
 	 * @return true:校验通过;false:校验不通过
25 25
 	 */
26
-	public static function checkSign4TextRequest($body,$secret){
27
-		return self::checkSign(null,$body,$secret);
26
+	public static function checkSign4TextRequest($body, $secret) {
27
+		return self::checkSign(null, $body, $secret);
28 28
 	}
29 29
 	
30 30
 	/**
@@ -35,7 +35,7 @@  discard block
 block discarded – undo
35 35
 	 * @param secret app对应的secret
36 36
 	 * @return true:校验通过;false:校验不通过
37 37
 	 */
38
-	public static function checkSign4FileRequest($form, $secret){
38
+	public static function checkSign4FileRequest($form, $secret) {
39 39
 		return self::checkSign($form, null, $secret);
40 40
 	}
41 41
 
@@ -43,29 +43,29 @@  discard block
 block discarded – undo
43 43
 		$params = array();
44 44
 		// 1. 获取header参数
45 45
 		$headerMap = self::getHeaderMap();
46
-		foreach ($headerMap as $k => $v){
47
-			$params[$k] = $v ;
46
+		foreach ($headerMap as $k => $v) {
47
+			$params[$k] = $v;
48 48
 		}
49 49
 
50 50
 		// 2. 获取url参数
51 51
 		$queryMap = self::getQueryMap();
52
-		foreach ($queryMap as $k => $v){
53
-			$params[$k] = $v ;
52
+		foreach ($queryMap as $k => $v) {
53
+			$params[$k] = $v;
54 54
 		}
55 55
 
56 56
 		// 3. 获取form参数
57 57
 		if ($form == null && $body == null) {
58 58
 			$formMap = self::getFormMap();
59
-			foreach ($formMap as $k => $v){
60
-				$params[$k] = $v ;
59
+			foreach ($formMap as $k => $v) {
60
+				$params[$k] = $v;
61 61
 			}
62
-		} else if ($form != null) {
63
-			foreach ($form as $k => $v){
64
-				$params[$k] = $v ;
62
+		}else if ($form != null) {
63
+			foreach ($form as $k => $v) {
64
+				$params[$k] = $v;
65 65
 			}
66 66
 		}
67 67
 
68
-		if($body == null){
68
+		if ($body == null) {
69 69
 			$body = file_get_contents('php://input');
70 70
 		}
71 71
 
@@ -73,9 +73,9 @@  discard block
 block discarded – undo
73 73
 		$localSign = self::sign($params, $body, $secret);
74 74
 		if (strcmp($remoteSign, $localSign) == 0) {
75 75
 			return true;
76
-		} else {
76
+		}else {
77 77
 			$paramStr = self::getParamStrFromMap($params);
78
-			self::logCommunicationError($remoteSign,$localSign,$paramStr,$body);
78
+			self::logCommunicationError($remoteSign, $localSign, $paramStr, $body);
79 79
 			return false;
80 80
 		}
81 81
 	}
@@ -84,18 +84,18 @@  discard block
 block discarded – undo
84 84
 		$headerMap = array();
85 85
 		$signList = $_SERVER['HTTP_TOP_SIGN_LIST']; // 只获取参与签名的头部字段
86 86
 
87
-		if(!$signList) {
87
+		if (!$signList) {
88 88
 			return $headerMap;
89 89
 		}
90 90
 
91 91
 		$signList = trim($signList);
92
-		if (strlen($signList) > 0){
92
+		if (strlen($signList) > 0) {
93 93
 			$params = split(",", $signList);
94
-			foreach ($_SERVER as $k => $v){
95
-				if (substr($k, 0, 5) == 'HTTP_'){
96
-					foreach($params as $kk){
94
+			foreach ($_SERVER as $k => $v) {
95
+				if (substr($k, 0, 5) == 'HTTP_') {
96
+					foreach ($params as $kk) {
97 97
 						$upperkey = strtoupper($kk);
98
-						if(self::endWith($k,$upperkey)){
98
+						if (self::endWith($k, $upperkey)) {
99 99
 							$headerMap[$kk] = $v;
100 100
 						}
101 101
 					}
@@ -105,7 +105,7 @@  discard block
 block discarded – undo
105 105
 		return $headerMap;
106 106
 	}
107 107
 
108
-	private static function getQueryMap(){
108
+	private static function getQueryMap() {
109 109
 		$queryStr = $_SERVER["QUERY_STRING"];
110 110
 		$resultArray = array();
111 111
 		foreach (explode('&', $queryStr) as $pair) {
@@ -115,35 +115,35 @@  discard block
 block discarded – undo
115 115
 
116 116
 		        if (preg_match('/(?P<name>\w+)\[(?P<index>\w+)\]/', $subKey, $matches)) {
117 117
 		            $resultArray[$matches['name']][$matches['index']][$subVal] = $value;
118
-		        } else {
118
+		        }else {
119 119
 		            $resultArray[$subKey][$subVal] = urldecode($value);
120 120
 		        }
121
-		    } else {
121
+		    }else {
122 122
 		        $resultArray[$key] = urldecode($value);
123 123
 		    }
124 124
 		}
125 125
 		return $resultArray;
126 126
 	}
127 127
 
128
-	private static function checkRemoteIp(){
128
+	private static function checkRemoteIp() {
129 129
 		$remoteIp = $_SERVER["REMOTE_ADDR"];
130
-		foreach ($header_real_ip as $k){
130
+		foreach ($header_real_ip as $k) {
131 131
 			$realIp = $_SERVER[$k];
132 132
 			$realIp = trim($realIp);
133
-			if(strlen($realIp) > 0 && strcasecmp("unknown",$realIp)){
133
+			if (strlen($realIp) > 0 && strcasecmp("unknown", $realIp)) {
134 134
 				$remoteIp = $realIp;
135 135
 				break;
136 136
 			}
137 137
 		}
138
-		return self::startsWith($remoteIp,"140.205.144.") || self::startsWith($remoteIp,"40.205.145.");
138
+		return self::startsWith($remoteIp, "140.205.144.") || self::startsWith($remoteIp, "40.205.145.");
139 139
 	}
140 140
 
141
-	private static function getFormMap(){
141
+	private static function getFormMap() {
142 142
 		$resultArray = array();
143
-		foreach($_POST as $key=>$v) { 
144
-			$resultArray[$key] = $v ;
143
+		foreach ($_POST as $key=>$v) { 
144
+			$resultArray[$key] = $v;
145 145
 		}
146
-		return $resultArray ;	
146
+		return $resultArray;	
147 147
 	}
148 148
 
149 149
 	private static function startsWith($haystack, $needle) {
@@ -152,30 +152,30 @@  discard block
 block discarded – undo
152 152
 
153 153
 	private static function endWith($haystack, $needle) {   
154 154
 	    $length = strlen($needle);  
155
-	    if($length == 0)
155
+	    if ($length == 0)
156 156
 	    {    
157 157
 	        return true;  
158 158
 	    }  
159 159
 	    return (substr($haystack, -$length) === $needle);
160 160
  	}
161 161
 
162
-	private static function checkTimestamp(){
162
+	private static function checkTimestamp() {
163 163
 		$ts = $_POST['timestamp'];
164
-		if($ts){
164
+		if ($ts) {
165 165
 			$clientTimestamp = strtotime($ts);
166 166
 			$current = $_SERVER['REQUEST_TIME'];
167
-			return ($current - $clientTimestamp) <= 5*60*1000;
168
-		}else{
167
+			return ($current-$clientTimestamp) <= 5*60*1000;
168
+		}else {
169 169
 			return false;
170 170
 		}
171 171
 	}
172 172
 
173
-	private static function getParamStrFromMap($params){
173
+	private static function getParamStrFromMap($params) {
174 174
 		ksort($params);
175 175
 		$stringToBeSigned = "";
176 176
 		foreach ($params as $k => $v)
177 177
 		{
178
-			if(strcmp("sign", $k) != 0)
178
+			if (strcmp("sign", $k) != 0)
179 179
 			{
180 180
 				$stringToBeSigned .= "$k$v";
181 181
 			}
@@ -184,13 +184,13 @@  discard block
 block discarded – undo
184 184
 		return $stringToBeSigned;
185 185
 	}
186 186
 
187
-	private static function sign($params,$body,$secret){
187
+	private static function sign($params, $body, $secret) {
188 188
 		ksort($params);
189 189
 
190 190
 		$stringToBeSigned = $secret;
191 191
 		$stringToBeSigned .= self::getParamStrFromMap($params);
192 192
 
193
-		if($body)
193
+		if ($body)
194 194
 			$stringToBeSigned .= $body;
195 195
 		$stringToBeSigned .= $secret;
196 196
 		return strtoupper(md5($stringToBeSigned));
@@ -200,18 +200,18 @@  discard block
 block discarded – undo
200 200
 	{
201 201
 		$localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
202 202
 		$logger = new TopLogger;
203
-		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_". date("Y-m-d") . ".log";
203
+		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/').'/'."logs/top_comm_err_".date("Y-m-d").".log";
204 204
 		$logger->conf["separator"] = "^_^";
205 205
 		$logData = array(
206
-		"checkTopSign error" ,
207
-		"remoteSign=".$remoteSign ,
208
-		"localSign=".$localSign ,
209
-		"paramStr=".$paramStr ,
206
+		"checkTopSign error",
207
+		"remoteSign=".$remoteSign,
208
+		"localSign=".$localSign,
209
+		"paramStr=".$paramStr,
210 210
 		"body=".$body
211 211
 		);
212 212
 		$logger->log($logData);
213 213
 	}
214
-	private static function clear_blank($str, $glue='')
214
+	private static function clear_blank($str, $glue = '')
215 215
 	{
216 216
 		$replace = array(" ", "\r", "\n", "\t"); return str_replace($replace, $glue, $str);
217 217
 	}
Please login to merge, or discard this patch.
Braces   +4 added lines, -3 removed lines patch added patch discarded remove patch
@@ -165,7 +165,7 @@  discard block
 block discarded – undo
165 165
 			$clientTimestamp = strtotime($ts);
166 166
 			$current = $_SERVER['REQUEST_TIME'];
167 167
 			return ($current - $clientTimestamp) <= 5*60*1000;
168
-		}else{
168
+		} else{
169 169
 			return false;
170 170
 		}
171 171
 	}
@@ -190,8 +190,9 @@  discard block
 block discarded – undo
190 190
 		$stringToBeSigned = $secret;
191 191
 		$stringToBeSigned .= self::getParamStrFromMap($params);
192 192
 
193
-		if($body)
194
-			$stringToBeSigned .= $body;
193
+		if($body) {
194
+					$stringToBeSigned .= $body;
195
+		}
195 196
 		$stringToBeSigned .= $secret;
196 197
 		return strtoupper(md5($stringToBeSigned));
197 198
 	}
Please login to merge, or discard this patch.
src/service/taobao/bin/top/TopClient.php 3 patches
Indentation   +370 added lines, -370 removed lines patch added patch discarded remove patch
@@ -1,377 +1,377 @@
 block discarded – undo
1 1
 <?php
2 2
 class TopClient
3 3
 {
4
-	public $appkey;
5
-
6
-	public $secretKey;
7
-
8
-	public $gatewayUrl = "http://gw.api.taobao.com/router/rest";
9
-
10
-	public $format = "xml";
11
-
12
-	public $connectTimeout;
13
-
14
-	public $readTimeout;
15
-
16
-	/** 是否打开入参check**/
17
-	public $checkRequest = true;
18
-
19
-	protected $signMethod = "md5";
20
-
21
-	protected $apiVersion = "2.0";
22
-
23
-	protected $sdkVersion = "top-sdk-php-20180326";
24
-
25
-	public function getAppkey()
26
-	{
27
-		return $this->appkey;
28
-	}
29
-
30
-	public function __construct($appkey = "",$secretKey = ""){
31
-		$this->appkey = $appkey;
32
-		$this->secretKey = $secretKey ;
33
-	}
34
-
35
-	protected function generateSign($params)
36
-	{
37
-		ksort($params);
38
-
39
-		$stringToBeSigned = $this->secretKey;
40
-		foreach ($params as $k => $v)
41
-		{
42
-			if(!is_array($v) && "@" != substr($v, 0, 1))
43
-			{
44
-				$stringToBeSigned .= "$k$v";
45
-			}
46
-		}
47
-		unset($k, $v);
48
-		$stringToBeSigned .= $this->secretKey;
49
-
50
-		return strtoupper(md5($stringToBeSigned));
51
-	}
52
-
53
-	public function curl($url, $postFields = null)
54
-	{
55
-		$ch = curl_init();
56
-		curl_setopt($ch, CURLOPT_URL, $url);
57
-		curl_setopt($ch, CURLOPT_FAILONERROR, false);
58
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
59
-		if ($this->readTimeout) {
60
-			curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
61
-		}
62
-		if ($this->connectTimeout) {
63
-			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
64
-		}
65
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
66
-		//https 请求
67
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
68
-			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
69
-			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
70
-		}
71
-
72
-		if (is_array($postFields) && 0 < count($postFields))
73
-		{
74
-			$postBodyString = "";
75
-			$postMultipart = false;
76
-			foreach ($postFields as $k => $v)
77
-			{
78
-				if("@" != substr($v, 0, 1))//判断是不是文件上传
79
-				{
80
-					$postBodyString .= "$k=" . urlencode($v) . "&"; 
81
-				}
82
-				else//文件上传用multipart/form-data,否则用www-form-urlencoded
83
-				{
84
-					$postMultipart = true;
85
-					if(class_exists('\CURLFile')){
86
-						$postFields[$k] = new \CURLFile(substr($v, 1));
87
-					}
88
-				}
89
-			}
90
-			unset($k, $v);
91
-			curl_setopt($ch, CURLOPT_POST, true);
92
-			if ($postMultipart)
93
-			{
94
-				if (class_exists('\CURLFile')) {
95
-				    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
96
-				} else {
97
-				    if (defined('CURLOPT_SAFE_UPLOAD')) {
98
-				        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
99
-				    }
100
-				}
101
-				curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
102
-			}
103
-			else
104
-			{
105
-				$header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
106
-				curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
107
-				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
108
-			}
109
-		}
110
-		$reponse = curl_exec($ch);
4
+    public $appkey;
5
+
6
+    public $secretKey;
7
+
8
+    public $gatewayUrl = "http://gw.api.taobao.com/router/rest";
9
+
10
+    public $format = "xml";
11
+
12
+    public $connectTimeout;
13
+
14
+    public $readTimeout;
15
+
16
+    /** 是否打开入参check**/
17
+    public $checkRequest = true;
18
+
19
+    protected $signMethod = "md5";
20
+
21
+    protected $apiVersion = "2.0";
22
+
23
+    protected $sdkVersion = "top-sdk-php-20180326";
24
+
25
+    public function getAppkey()
26
+    {
27
+        return $this->appkey;
28
+    }
29
+
30
+    public function __construct($appkey = "",$secretKey = ""){
31
+        $this->appkey = $appkey;
32
+        $this->secretKey = $secretKey ;
33
+    }
34
+
35
+    protected function generateSign($params)
36
+    {
37
+        ksort($params);
38
+
39
+        $stringToBeSigned = $this->secretKey;
40
+        foreach ($params as $k => $v)
41
+        {
42
+            if(!is_array($v) && "@" != substr($v, 0, 1))
43
+            {
44
+                $stringToBeSigned .= "$k$v";
45
+            }
46
+        }
47
+        unset($k, $v);
48
+        $stringToBeSigned .= $this->secretKey;
49
+
50
+        return strtoupper(md5($stringToBeSigned));
51
+    }
52
+
53
+    public function curl($url, $postFields = null)
54
+    {
55
+        $ch = curl_init();
56
+        curl_setopt($ch, CURLOPT_URL, $url);
57
+        curl_setopt($ch, CURLOPT_FAILONERROR, false);
58
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
59
+        if ($this->readTimeout) {
60
+            curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
61
+        }
62
+        if ($this->connectTimeout) {
63
+            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
64
+        }
65
+        curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
66
+        //https 请求
67
+        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
68
+            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
69
+            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
70
+        }
71
+
72
+        if (is_array($postFields) && 0 < count($postFields))
73
+        {
74
+            $postBodyString = "";
75
+            $postMultipart = false;
76
+            foreach ($postFields as $k => $v)
77
+            {
78
+                if("@" != substr($v, 0, 1))//判断是不是文件上传
79
+                {
80
+                    $postBodyString .= "$k=" . urlencode($v) . "&"; 
81
+                }
82
+                else//文件上传用multipart/form-data,否则用www-form-urlencoded
83
+                {
84
+                    $postMultipart = true;
85
+                    if(class_exists('\CURLFile')){
86
+                        $postFields[$k] = new \CURLFile(substr($v, 1));
87
+                    }
88
+                }
89
+            }
90
+            unset($k, $v);
91
+            curl_setopt($ch, CURLOPT_POST, true);
92
+            if ($postMultipart)
93
+            {
94
+                if (class_exists('\CURLFile')) {
95
+                    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
96
+                } else {
97
+                    if (defined('CURLOPT_SAFE_UPLOAD')) {
98
+                        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
99
+                    }
100
+                }
101
+                curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
102
+            }
103
+            else
104
+            {
105
+                $header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
106
+                curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
107
+                curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
108
+            }
109
+        }
110
+        $reponse = curl_exec($ch);
111 111
 		
112
-		if (curl_errno($ch))
113
-		{
114
-			throw new Exception(curl_error($ch),0);
115
-		}
116
-		else
117
-		{
118
-			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
119
-			if (200 !== $httpStatusCode)
120
-			{
121
-				throw new Exception($reponse,$httpStatusCode);
122
-			}
123
-		}
124
-		curl_close($ch);
125
-		return $reponse;
126
-	}
127
-	public function curl_with_memory_file($url, $postFields = null, $fileFields = null)
128
-	{
129
-		$ch = curl_init();
130
-		curl_setopt($ch, CURLOPT_URL, $url);
131
-		curl_setopt($ch, CURLOPT_FAILONERROR, false);
132
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
133
-		if ($this->readTimeout) {
134
-			curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
135
-		}
136
-		if ($this->connectTimeout) {
137
-			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
138
-		}
139
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
140
-		//https 请求
141
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
142
-			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
143
-			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
144
-		}
145
-		//生成分隔符
146
-		$delimiter = '-------------' . uniqid();
147
-		//先将post的普通数据生成主体字符串
148
-		$data = '';
149
-		if($postFields != null){
150
-			foreach ($postFields as $name => $content) {
151
-			    $data .= "--" . $delimiter . "\r\n";
152
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"';
153
-			    //multipart/form-data 不需要urlencode,参见 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data
154
-			    $data .= "\r\n\r\n" . $content . "\r\n";
155
-			}
156
-			unset($name,$content);
157
-		}
158
-
159
-		//将上传的文件生成主体字符串
160
-		if($fileFields != null){
161
-			foreach ($fileFields as $name => $file) {
162
-			    $data .= "--" . $delimiter . "\r\n";
163
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['name'] . "\" \r\n";
164
-			    $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//多了个文档类型
165
-
166
-			    $data .= $file['content'] . "\r\n";
167
-			}
168
-			unset($name,$file);
169
-		}
170
-		//主体结束的分隔符
171
-		$data .= "--" . $delimiter . "--";
172
-
173
-		curl_setopt($ch, CURLOPT_POST, true);
174
-		curl_setopt($ch, CURLOPT_HTTPHEADER , array(
175
-		    'Content-Type: multipart/form-data; boundary=' . $delimiter,
176
-		    'Content-Length: ' . strlen($data))
177
-		); 
178
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
179
-		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
180
-
181
-		$reponse = curl_exec($ch);
182
-		unset($data);
183
-
184
-		if (curl_errno($ch))
185
-		{
186
-			throw new Exception(curl_error($ch),0);
187
-		}
188
-		else
189
-		{
190
-			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
191
-			if (200 !== $httpStatusCode)
192
-			{
193
-				throw new Exception($reponse,$httpStatusCode);
194
-			}
195
-		}
196
-		curl_close($ch);
197
-		return $reponse;
198
-	}
199
-
200
-	protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt)
201
-	{
202
-		$localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
203
-		$logger = new TopLogger;
204
-		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
205
-		$logger->conf["separator"] = "^_^";
206
-		$logData = array(
207
-		date("Y-m-d H:i:s"),
208
-		$apiName,
209
-		$this->appkey,
210
-		$localIp,
211
-		PHP_OS,
212
-		$this->sdkVersion,
213
-		$requestUrl,
214
-		$errorCode,
215
-		str_replace("\n","",$responseTxt)
216
-		);
217
-		$logger->log($logData);
218
-	}
219
-
220
-	public function execute($request, $session = null,$bestUrl = null)
221
-	{
222
-		$result =  new ResultSet(); 
223
-		if($this->checkRequest) {
224
-			try {
225
-				$request->check();
226
-			} catch (Exception $e) {
227
-
228
-				$result->code = $e->getCode();
229
-				$result->msg = $e->getMessage();
230
-				return $result;
231
-			}
232
-		}
233
-		//组装系统参数
234
-		$sysParams["app_key"] = $this->appkey;
235
-		$sysParams["v"] = $this->apiVersion;
236
-		$sysParams["format"] = $this->format;
237
-		$sysParams["sign_method"] = $this->signMethod;
238
-		$sysParams["method"] = $request->getApiMethodName();
239
-		$sysParams["timestamp"] = date("Y-m-d H:i:s");
240
-		if (null != $session)
241
-		{
242
-			$sysParams["session"] = $session;
243
-		}
244
-		$apiParams = array();
245
-		//获取业务参数
246
-		$apiParams = $request->getApiParas();
247
-
248
-
249
-		//系统参数放入GET请求串
250
-		if($bestUrl){
251
-			$requestUrl = $bestUrl."?";
252
-			$sysParams["partner_id"] = $this->getClusterTag();
253
-		}else{
254
-			$requestUrl = $this->gatewayUrl."?";
255
-			$sysParams["partner_id"] = $this->sdkVersion;
256
-		}
257
-		//签名
258
-		$sysParams["sign"] = $this->generateSign(array_merge($apiParams, $sysParams));
259
-
260
-		foreach ($sysParams as $sysParamKey => $sysParamValue)
261
-		{
262
-			// if(strcmp($sysParamKey,"timestamp") != 0)
263
-			$requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";
264
-		}
265
-
266
-		$fileFields = array();
267
-		foreach ($apiParams as $key => $value) {
268
-			if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
269
-				$value['name'] = $key;
270
-				$fileFields[$key] = $value;
271
-				unset($apiParams[$key]);
272
-			}
273
-		}
274
-
275
-		// $requestUrl .= "timestamp=" . urlencode($sysParams["timestamp"]) . "&";
276
-		$requestUrl = substr($requestUrl, 0, -1);
277
-
278
-		//发起HTTP请求
279
-		try
280
-		{
281
-			if(count($fileFields) > 0){
282
-				$resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
283
-			}else{
284
-				$resp = $this->curl($requestUrl, $apiParams);
285
-			}
286
-		}
287
-		catch (Exception $e)
288
-		{
289
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
290
-			$result->code = $e->getCode();
291
-			$result->msg = $e->getMessage();
292
-			return $result;
293
-		}
294
-
295
-		unset($apiParams);
296
-		unset($fileFields);
297
-		//解析TOP返回结果
298
-		$respWellFormed = false;
299
-		if ("json" == $this->format)
300
-		{
301
-			$respObject = json_decode($resp);
302
-			if (null !== $respObject)
303
-			{
304
-				$respWellFormed = true;
305
-				foreach ($respObject as $propKey => $propValue)
306
-				{
307
-					$respObject = $propValue;
308
-				}
309
-			}
310
-		}
311
-		else if("xml" == $this->format)
312
-		{
313
-			$respObject = @simplexml_load_string($resp);
314
-			if (false !== $respObject)
315
-			{
316
-				$respWellFormed = true;
317
-			}
318
-		}
319
-
320
-		//返回的HTTP文本不是标准JSON或者XML,记下错误日志
321
-		if (false === $respWellFormed)
322
-		{
323
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
324
-			$result->code = 0;
325
-			$result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
326
-			return $result;
327
-		}
328
-
329
-		//如果TOP返回了错误码,记录到业务错误日志中
330
-		if (isset($respObject->code))
331
-		{
332
-			$logger = new TopLogger;
333
-			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
334
-			$logger->log(array(
335
-				date("Y-m-d H:i:s"),
336
-				$resp
337
-			));
338
-		}
339
-		return $respObject;
340
-	}
341
-
342
-	public function exec($paramsArray)
343
-	{
344
-		if (!isset($paramsArray["method"]))
345
-		{
346
-			trigger_error("No api name passed");
347
-		}
348
-		$inflector = new LtInflector;
349
-		$inflector->conf["separator"] = ".";
350
-		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
351
-		if (!class_exists($requestClassName))
352
-		{
353
-			trigger_error("No such api: " . $paramsArray["method"]);
354
-		}
355
-
356
-		$session = isset($paramsArray["session"]) ? $paramsArray["session"] : null;
357
-
358
-		$req = new $requestClassName;
359
-		foreach($paramsArray as $paraKey => $paraValue)
360
-		{
361
-			$inflector->conf["separator"] = "_";
362
-			$setterMethodName = $inflector->camelize($paraKey);
363
-			$inflector->conf["separator"] = ".";
364
-			$setterMethodName = "set" . $inflector->camelize($setterMethodName);
365
-			if (method_exists($req, $setterMethodName))
366
-			{
367
-				$req->$setterMethodName($paraValue);
368
-			}
369
-		}
370
-		return $this->execute($req, $session);
371
-	}
372
-
373
-	private function getClusterTag()
112
+        if (curl_errno($ch))
113
+        {
114
+            throw new Exception(curl_error($ch),0);
115
+        }
116
+        else
117
+        {
118
+            $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
119
+            if (200 !== $httpStatusCode)
120
+            {
121
+                throw new Exception($reponse,$httpStatusCode);
122
+            }
123
+        }
124
+        curl_close($ch);
125
+        return $reponse;
126
+    }
127
+    public function curl_with_memory_file($url, $postFields = null, $fileFields = null)
128
+    {
129
+        $ch = curl_init();
130
+        curl_setopt($ch, CURLOPT_URL, $url);
131
+        curl_setopt($ch, CURLOPT_FAILONERROR, false);
132
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
133
+        if ($this->readTimeout) {
134
+            curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
135
+        }
136
+        if ($this->connectTimeout) {
137
+            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
138
+        }
139
+        curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
140
+        //https 请求
141
+        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
142
+            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
143
+            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
144
+        }
145
+        //生成分隔符
146
+        $delimiter = '-------------' . uniqid();
147
+        //先将post的普通数据生成主体字符串
148
+        $data = '';
149
+        if($postFields != null){
150
+            foreach ($postFields as $name => $content) {
151
+                $data .= "--" . $delimiter . "\r\n";
152
+                $data .= 'Content-Disposition: form-data; name="' . $name . '"';
153
+                //multipart/form-data 不需要urlencode,参见 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data
154
+                $data .= "\r\n\r\n" . $content . "\r\n";
155
+            }
156
+            unset($name,$content);
157
+        }
158
+
159
+        //将上传的文件生成主体字符串
160
+        if($fileFields != null){
161
+            foreach ($fileFields as $name => $file) {
162
+                $data .= "--" . $delimiter . "\r\n";
163
+                $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['name'] . "\" \r\n";
164
+                $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//多了个文档类型
165
+
166
+                $data .= $file['content'] . "\r\n";
167
+            }
168
+            unset($name,$file);
169
+        }
170
+        //主体结束的分隔符
171
+        $data .= "--" . $delimiter . "--";
172
+
173
+        curl_setopt($ch, CURLOPT_POST, true);
174
+        curl_setopt($ch, CURLOPT_HTTPHEADER , array(
175
+            'Content-Type: multipart/form-data; boundary=' . $delimiter,
176
+            'Content-Length: ' . strlen($data))
177
+        ); 
178
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
179
+        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
180
+
181
+        $reponse = curl_exec($ch);
182
+        unset($data);
183
+
184
+        if (curl_errno($ch))
185
+        {
186
+            throw new Exception(curl_error($ch),0);
187
+        }
188
+        else
189
+        {
190
+            $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
191
+            if (200 !== $httpStatusCode)
192
+            {
193
+                throw new Exception($reponse,$httpStatusCode);
194
+            }
195
+        }
196
+        curl_close($ch);
197
+        return $reponse;
198
+    }
199
+
200
+    protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt)
201
+    {
202
+        $localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
203
+        $logger = new TopLogger;
204
+        $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
205
+        $logger->conf["separator"] = "^_^";
206
+        $logData = array(
207
+        date("Y-m-d H:i:s"),
208
+        $apiName,
209
+        $this->appkey,
210
+        $localIp,
211
+        PHP_OS,
212
+        $this->sdkVersion,
213
+        $requestUrl,
214
+        $errorCode,
215
+        str_replace("\n","",$responseTxt)
216
+        );
217
+        $logger->log($logData);
218
+    }
219
+
220
+    public function execute($request, $session = null,$bestUrl = null)
221
+    {
222
+        $result =  new ResultSet(); 
223
+        if($this->checkRequest) {
224
+            try {
225
+                $request->check();
226
+            } catch (Exception $e) {
227
+
228
+                $result->code = $e->getCode();
229
+                $result->msg = $e->getMessage();
230
+                return $result;
231
+            }
232
+        }
233
+        //组装系统参数
234
+        $sysParams["app_key"] = $this->appkey;
235
+        $sysParams["v"] = $this->apiVersion;
236
+        $sysParams["format"] = $this->format;
237
+        $sysParams["sign_method"] = $this->signMethod;
238
+        $sysParams["method"] = $request->getApiMethodName();
239
+        $sysParams["timestamp"] = date("Y-m-d H:i:s");
240
+        if (null != $session)
241
+        {
242
+            $sysParams["session"] = $session;
243
+        }
244
+        $apiParams = array();
245
+        //获取业务参数
246
+        $apiParams = $request->getApiParas();
247
+
248
+
249
+        //系统参数放入GET请求串
250
+        if($bestUrl){
251
+            $requestUrl = $bestUrl."?";
252
+            $sysParams["partner_id"] = $this->getClusterTag();
253
+        }else{
254
+            $requestUrl = $this->gatewayUrl."?";
255
+            $sysParams["partner_id"] = $this->sdkVersion;
256
+        }
257
+        //签名
258
+        $sysParams["sign"] = $this->generateSign(array_merge($apiParams, $sysParams));
259
+
260
+        foreach ($sysParams as $sysParamKey => $sysParamValue)
261
+        {
262
+            // if(strcmp($sysParamKey,"timestamp") != 0)
263
+            $requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";
264
+        }
265
+
266
+        $fileFields = array();
267
+        foreach ($apiParams as $key => $value) {
268
+            if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
269
+                $value['name'] = $key;
270
+                $fileFields[$key] = $value;
271
+                unset($apiParams[$key]);
272
+            }
273
+        }
274
+
275
+        // $requestUrl .= "timestamp=" . urlencode($sysParams["timestamp"]) . "&";
276
+        $requestUrl = substr($requestUrl, 0, -1);
277
+
278
+        //发起HTTP请求
279
+        try
280
+        {
281
+            if(count($fileFields) > 0){
282
+                $resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
283
+            }else{
284
+                $resp = $this->curl($requestUrl, $apiParams);
285
+            }
286
+        }
287
+        catch (Exception $e)
288
+        {
289
+            $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
290
+            $result->code = $e->getCode();
291
+            $result->msg = $e->getMessage();
292
+            return $result;
293
+        }
294
+
295
+        unset($apiParams);
296
+        unset($fileFields);
297
+        //解析TOP返回结果
298
+        $respWellFormed = false;
299
+        if ("json" == $this->format)
300
+        {
301
+            $respObject = json_decode($resp);
302
+            if (null !== $respObject)
303
+            {
304
+                $respWellFormed = true;
305
+                foreach ($respObject as $propKey => $propValue)
306
+                {
307
+                    $respObject = $propValue;
308
+                }
309
+            }
310
+        }
311
+        else if("xml" == $this->format)
312
+        {
313
+            $respObject = @simplexml_load_string($resp);
314
+            if (false !== $respObject)
315
+            {
316
+                $respWellFormed = true;
317
+            }
318
+        }
319
+
320
+        //返回的HTTP文本不是标准JSON或者XML,记下错误日志
321
+        if (false === $respWellFormed)
322
+        {
323
+            $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
324
+            $result->code = 0;
325
+            $result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
326
+            return $result;
327
+        }
328
+
329
+        //如果TOP返回了错误码,记录到业务错误日志中
330
+        if (isset($respObject->code))
331
+        {
332
+            $logger = new TopLogger;
333
+            $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
334
+            $logger->log(array(
335
+                date("Y-m-d H:i:s"),
336
+                $resp
337
+            ));
338
+        }
339
+        return $respObject;
340
+    }
341
+
342
+    public function exec($paramsArray)
343
+    {
344
+        if (!isset($paramsArray["method"]))
345
+        {
346
+            trigger_error("No api name passed");
347
+        }
348
+        $inflector = new LtInflector;
349
+        $inflector->conf["separator"] = ".";
350
+        $requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
351
+        if (!class_exists($requestClassName))
352
+        {
353
+            trigger_error("No such api: " . $paramsArray["method"]);
354
+        }
355
+
356
+        $session = isset($paramsArray["session"]) ? $paramsArray["session"] : null;
357
+
358
+        $req = new $requestClassName;
359
+        foreach($paramsArray as $paraKey => $paraValue)
360
+        {
361
+            $inflector->conf["separator"] = "_";
362
+            $setterMethodName = $inflector->camelize($paraKey);
363
+            $inflector->conf["separator"] = ".";
364
+            $setterMethodName = "set" . $inflector->camelize($setterMethodName);
365
+            if (method_exists($req, $setterMethodName))
366
+            {
367
+                $req->$setterMethodName($paraValue);
368
+            }
369
+        }
370
+        return $this->execute($req, $session);
371
+    }
372
+
373
+    private function getClusterTag()
374 374
     {
375
-	    return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11);
375
+        return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11);
376 376
     }
377 377
 }
Please login to merge, or discard this patch.
Spacing   +53 added lines, -53 removed lines patch added patch discarded remove patch
@@ -27,9 +27,9 @@  discard block
 block discarded – undo
27 27
 		return $this->appkey;
28 28
 	}
29 29
 
30
-	public function __construct($appkey = "",$secretKey = ""){
30
+	public function __construct($appkey = "", $secretKey = "") {
31 31
 		$this->appkey = $appkey;
32
-		$this->secretKey = $secretKey ;
32
+		$this->secretKey = $secretKey;
33 33
 	}
34 34
 
35 35
 	protected function generateSign($params)
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
 		$stringToBeSigned = $this->secretKey;
40 40
 		foreach ($params as $k => $v)
41 41
 		{
42
-			if(!is_array($v) && "@" != substr($v, 0, 1))
42
+			if (!is_array($v) && "@" != substr($v, 0, 1))
43 43
 			{
44 44
 				$stringToBeSigned .= "$k$v";
45 45
 			}
@@ -62,9 +62,9 @@  discard block
 block discarded – undo
62 62
 		if ($this->connectTimeout) {
63 63
 			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
64 64
 		}
65
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
65
+		curl_setopt($ch, CURLOPT_USERAGENT, "top-sdk-php");
66 66
 		//https 请求
67
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
67
+		if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
68 68
 			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
69 69
 			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
70 70
 		}
@@ -75,14 +75,14 @@  discard block
 block discarded – undo
75 75
 			$postMultipart = false;
76 76
 			foreach ($postFields as $k => $v)
77 77
 			{
78
-				if("@" != substr($v, 0, 1))//判断是不是文件上传
78
+				if ("@" != substr($v, 0, 1))//判断是不是文件上传
79 79
 				{
80
-					$postBodyString .= "$k=" . urlencode($v) . "&"; 
80
+					$postBodyString .= "$k=".urlencode($v)."&"; 
81 81
 				}
82 82
 				else//文件上传用multipart/form-data,否则用www-form-urlencoded
83 83
 				{
84 84
 					$postMultipart = true;
85
-					if(class_exists('\CURLFile')){
85
+					if (class_exists('\CURLFile')) {
86 86
 						$postFields[$k] = new \CURLFile(substr($v, 1));
87 87
 					}
88 88
 				}
@@ -93,7 +93,7 @@  discard block
 block discarded – undo
93 93
 			{
94 94
 				if (class_exists('\CURLFile')) {
95 95
 				    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
96
-				} else {
96
+				}else {
97 97
 				    if (defined('CURLOPT_SAFE_UPLOAD')) {
98 98
 				        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
99 99
 				    }
@@ -103,22 +103,22 @@  discard block
 block discarded – undo
103 103
 			else
104 104
 			{
105 105
 				$header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
106
-				curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
107
-				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
106
+				curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
107
+				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString, 0, -1));
108 108
 			}
109 109
 		}
110 110
 		$reponse = curl_exec($ch);
111 111
 		
112 112
 		if (curl_errno($ch))
113 113
 		{
114
-			throw new Exception(curl_error($ch),0);
114
+			throw new Exception(curl_error($ch), 0);
115 115
 		}
116 116
 		else
117 117
 		{
118 118
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
119 119
 			if (200 !== $httpStatusCode)
120 120
 			{
121
-				throw new Exception($reponse,$httpStatusCode);
121
+				throw new Exception($reponse, $httpStatusCode);
122 122
 			}
123 123
 		}
124 124
 		curl_close($ch);
@@ -136,44 +136,44 @@  discard block
 block discarded – undo
136 136
 		if ($this->connectTimeout) {
137 137
 			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
138 138
 		}
139
-		curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
139
+		curl_setopt($ch, CURLOPT_USERAGENT, "top-sdk-php");
140 140
 		//https 请求
141
-		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
141
+		if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
142 142
 			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
143 143
 			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
144 144
 		}
145 145
 		//生成分隔符
146
-		$delimiter = '-------------' . uniqid();
146
+		$delimiter = '-------------'.uniqid();
147 147
 		//先将post的普通数据生成主体字符串
148 148
 		$data = '';
149
-		if($postFields != null){
149
+		if ($postFields != null) {
150 150
 			foreach ($postFields as $name => $content) {
151
-			    $data .= "--" . $delimiter . "\r\n";
152
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"';
151
+			    $data .= "--".$delimiter."\r\n";
152
+			    $data .= 'Content-Disposition: form-data; name="'.$name.'"';
153 153
 			    //multipart/form-data 不需要urlencode,参见 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data
154
-			    $data .= "\r\n\r\n" . $content . "\r\n";
154
+			    $data .= "\r\n\r\n".$content."\r\n";
155 155
 			}
156
-			unset($name,$content);
156
+			unset($name, $content);
157 157
 		}
158 158
 
159 159
 		//将上传的文件生成主体字符串
160
-		if($fileFields != null){
160
+		if ($fileFields != null) {
161 161
 			foreach ($fileFields as $name => $file) {
162
-			    $data .= "--" . $delimiter . "\r\n";
163
-			    $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['name'] . "\" \r\n";
164
-			    $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//多了个文档类型
162
+			    $data .= "--".$delimiter."\r\n";
163
+			    $data .= 'Content-Disposition: form-data; name="'.$name.'"; filename="'.$file['name']."\" \r\n";
164
+			    $data .= 'Content-Type: '.$file['type']."\r\n\r\n"; //多了个文档类型
165 165
 
166
-			    $data .= $file['content'] . "\r\n";
166
+			    $data .= $file['content']."\r\n";
167 167
 			}
168
-			unset($name,$file);
168
+			unset($name, $file);
169 169
 		}
170 170
 		//主体结束的分隔符
171
-		$data .= "--" . $delimiter . "--";
171
+		$data .= "--".$delimiter."--";
172 172
 
173 173
 		curl_setopt($ch, CURLOPT_POST, true);
174
-		curl_setopt($ch, CURLOPT_HTTPHEADER , array(
175
-		    'Content-Type: multipart/form-data; boundary=' . $delimiter,
176
-		    'Content-Length: ' . strlen($data))
174
+		curl_setopt($ch, CURLOPT_HTTPHEADER, array(
175
+		    'Content-Type: multipart/form-data; boundary='.$delimiter,
176
+		    'Content-Length: '.strlen($data))
177 177
 		); 
178 178
 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
179 179
 		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
@@ -183,14 +183,14 @@  discard block
 block discarded – undo
183 183
 
184 184
 		if (curl_errno($ch))
185 185
 		{
186
-			throw new Exception(curl_error($ch),0);
186
+			throw new Exception(curl_error($ch), 0);
187 187
 		}
188 188
 		else
189 189
 		{
190 190
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
191 191
 			if (200 !== $httpStatusCode)
192 192
 			{
193
-				throw new Exception($reponse,$httpStatusCode);
193
+				throw new Exception($reponse, $httpStatusCode);
194 194
 			}
195 195
 		}
196 196
 		curl_close($ch);
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
 	{
202 202
 		$localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
203 203
 		$logger = new TopLogger;
204
-		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
204
+		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/').'/'."logs/top_comm_err_".$this->appkey."_".date("Y-m-d").".log";
205 205
 		$logger->conf["separator"] = "^_^";
206 206
 		$logData = array(
207 207
 		date("Y-m-d H:i:s"),
@@ -212,15 +212,15 @@  discard block
 block discarded – undo
212 212
 		$this->sdkVersion,
213 213
 		$requestUrl,
214 214
 		$errorCode,
215
-		str_replace("\n","",$responseTxt)
215
+		str_replace("\n", "", $responseTxt)
216 216
 		);
217 217
 		$logger->log($logData);
218 218
 	}
219 219
 
220
-	public function execute($request, $session = null,$bestUrl = null)
220
+	public function execute($request, $session = null, $bestUrl = null)
221 221
 	{
222
-		$result =  new ResultSet(); 
223
-		if($this->checkRequest) {
222
+		$result = new ResultSet(); 
223
+		if ($this->checkRequest) {
224 224
 			try {
225 225
 				$request->check();
226 226
 			} catch (Exception $e) {
@@ -247,10 +247,10 @@  discard block
 block discarded – undo
247 247
 
248 248
 
249 249
 		//系统参数放入GET请求串
250
-		if($bestUrl){
250
+		if ($bestUrl) {
251 251
 			$requestUrl = $bestUrl."?";
252 252
 			$sysParams["partner_id"] = $this->getClusterTag();
253
-		}else{
253
+		}else {
254 254
 			$requestUrl = $this->gatewayUrl."?";
255 255
 			$sysParams["partner_id"] = $this->sdkVersion;
256 256
 		}
@@ -260,12 +260,12 @@  discard block
 block discarded – undo
260 260
 		foreach ($sysParams as $sysParamKey => $sysParamValue)
261 261
 		{
262 262
 			// if(strcmp($sysParamKey,"timestamp") != 0)
263
-			$requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";
263
+			$requestUrl .= "$sysParamKey=".urlencode($sysParamValue)."&";
264 264
 		}
265 265
 
266 266
 		$fileFields = array();
267 267
 		foreach ($apiParams as $key => $value) {
268
-			if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
268
+			if (is_array($value) && array_key_exists('type', $value) && array_key_exists('content', $value)) {
269 269
 				$value['name'] = $key;
270 270
 				$fileFields[$key] = $value;
271 271
 				unset($apiParams[$key]);
@@ -278,15 +278,15 @@  discard block
 block discarded – undo
278 278
 		//发起HTTP请求
279 279
 		try
280 280
 		{
281
-			if(count($fileFields) > 0){
281
+			if (count($fileFields) > 0) {
282 282
 				$resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
283
-			}else{
283
+			}else {
284 284
 				$resp = $this->curl($requestUrl, $apiParams);
285 285
 			}
286 286
 		}
287 287
 		catch (Exception $e)
288 288
 		{
289
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
289
+			$this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_ERROR_".$e->getCode(), $e->getMessage());
290 290
 			$result->code = $e->getCode();
291 291
 			$result->msg = $e->getMessage();
292 292
 			return $result;
@@ -308,7 +308,7 @@  discard block
 block discarded – undo
308 308
 				}
309 309
 			}
310 310
 		}
311
-		else if("xml" == $this->format)
311
+		else if ("xml" == $this->format)
312 312
 		{
313 313
 			$respObject = @simplexml_load_string($resp);
314 314
 			if (false !== $respObject)
@@ -320,7 +320,7 @@  discard block
 block discarded – undo
320 320
 		//返回的HTTP文本不是标准JSON或者XML,记下错误日志
321 321
 		if (false === $respWellFormed)
322 322
 		{
323
-			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
323
+			$this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_RESPONSE_NOT_WELL_FORMED", $resp);
324 324
 			$result->code = 0;
325 325
 			$result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
326 326
 			return $result;
@@ -330,7 +330,7 @@  discard block
 block discarded – undo
330 330
 		if (isset($respObject->code))
331 331
 		{
332 332
 			$logger = new TopLogger;
333
-			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
333
+			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/').'/'."logs/top_biz_err_".$this->appkey."_".date("Y-m-d").".log";
334 334
 			$logger->log(array(
335 335
 				date("Y-m-d H:i:s"),
336 336
 				$resp
@@ -347,21 +347,21 @@  discard block
 block discarded – undo
347 347
 		}
348 348
 		$inflector = new LtInflector;
349 349
 		$inflector->conf["separator"] = ".";
350
-		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
350
+		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7)))."Request";
351 351
 		if (!class_exists($requestClassName))
352 352
 		{
353
-			trigger_error("No such api: " . $paramsArray["method"]);
353
+			trigger_error("No such api: ".$paramsArray["method"]);
354 354
 		}
355 355
 
356 356
 		$session = isset($paramsArray["session"]) ? $paramsArray["session"] : null;
357 357
 
358 358
 		$req = new $requestClassName;
359
-		foreach($paramsArray as $paraKey => $paraValue)
359
+		foreach ($paramsArray as $paraKey => $paraValue)
360 360
 		{
361 361
 			$inflector->conf["separator"] = "_";
362 362
 			$setterMethodName = $inflector->camelize($paraKey);
363 363
 			$inflector->conf["separator"] = ".";
364
-			$setterMethodName = "set" . $inflector->camelize($setterMethodName);
364
+			$setterMethodName = "set".$inflector->camelize($setterMethodName);
365 365
 			if (method_exists($req, $setterMethodName))
366 366
 			{
367 367
 				$req->$setterMethodName($paraValue);
@@ -372,6 +372,6 @@  discard block
 block discarded – undo
372 372
 
373 373
 	private function getClusterTag()
374 374
     {
375
-	    return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11);
375
+	    return substr($this->sdkVersion, 0, 11)."-cluster".substr($this->sdkVersion, 11);
376 376
     }
377 377
 }
Please login to merge, or discard this patch.
Braces   +11 added lines, -15 removed lines patch added patch discarded remove patch
@@ -75,11 +75,12 @@  discard block
 block discarded – undo
75 75
 			$postMultipart = false;
76 76
 			foreach ($postFields as $k => $v)
77 77
 			{
78
-				if("@" != substr($v, 0, 1))//判断是不是文件上传
78
+				if("@" != substr($v, 0, 1)) {
79
+				    //判断是不是文件上传
79 80
 				{
80
-					$postBodyString .= "$k=" . urlencode($v) . "&"; 
81
+					$postBodyString .= "$k=" . urlencode($v) . "&";
81 82
 				}
82
-				else//文件上传用multipart/form-data,否则用www-form-urlencoded
83
+				} else//文件上传用multipart/form-data,否则用www-form-urlencoded
83 84
 				{
84 85
 					$postMultipart = true;
85 86
 					if(class_exists('\CURLFile')){
@@ -99,8 +100,7 @@  discard block
 block discarded – undo
99 100
 				    }
100 101
 				}
101 102
 				curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
102
-			}
103
-			else
103
+			} else
104 104
 			{
105 105
 				$header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
106 106
 				curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
@@ -112,8 +112,7 @@  discard block
 block discarded – undo
112 112
 		if (curl_errno($ch))
113 113
 		{
114 114
 			throw new Exception(curl_error($ch),0);
115
-		}
116
-		else
115
+		} else
117 116
 		{
118 117
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
119 118
 			if (200 !== $httpStatusCode)
@@ -184,8 +183,7 @@  discard block
 block discarded – undo
184 183
 		if (curl_errno($ch))
185 184
 		{
186 185
 			throw new Exception(curl_error($ch),0);
187
-		}
188
-		else
186
+		} else
189 187
 		{
190 188
 			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
191 189
 			if (200 !== $httpStatusCode)
@@ -250,7 +248,7 @@  discard block
 block discarded – undo
250 248
 		if($bestUrl){
251 249
 			$requestUrl = $bestUrl."?";
252 250
 			$sysParams["partner_id"] = $this->getClusterTag();
253
-		}else{
251
+		} else{
254 252
 			$requestUrl = $this->gatewayUrl."?";
255 253
 			$sysParams["partner_id"] = $this->sdkVersion;
256 254
 		}
@@ -280,11 +278,10 @@  discard block
 block discarded – undo
280 278
 		{
281 279
 			if(count($fileFields) > 0){
282 280
 				$resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
283
-			}else{
281
+			} else{
284 282
 				$resp = $this->curl($requestUrl, $apiParams);
285 283
 			}
286
-		}
287
-		catch (Exception $e)
284
+		} catch (Exception $e)
288 285
 		{
289 286
 			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
290 287
 			$result->code = $e->getCode();
@@ -307,8 +304,7 @@  discard block
 block discarded – undo
307 304
 					$respObject = $propValue;
308 305
 				}
309 306
 			}
310
-		}
311
-		else if("xml" == $this->format)
307
+		} else if("xml" == $this->format)
312 308
 		{
313 309
 			$respObject = @simplexml_load_string($resp);
314 310
 			if (false !== $respObject)
Please login to merge, or discard this patch.
src/service/taobao/bin/top/ResultSet.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -8,14 +8,14 @@
 block discarded – undo
8 8
 class ResultSet
9 9
 {
10 10
 	
11
-	/** 
12
-	 * 返回的错误码
13
-	 **/
14
-	public $code;
11
+    /** 
12
+     * 返回的错误码
13
+     **/
14
+    public $code;
15 15
 	
16
-	/** 
17
-	 * 返回的错误信息
18
-	 **/
19
-	public $msg;
16
+    /** 
17
+     * 返回的错误信息
18
+     **/
19
+    public $msg;
20 20
 	
21 21
 }
Please login to merge, or discard this patch.