Response.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. namespace Joypack\Tencent\Map;
  3. /**
  4. * 腾讯位置服务
  5. * 接口响应类
  6. */
  7. class Response
  8. {
  9. public $error;
  10. public $logger;
  11. protected $original;
  12. protected $decode;
  13. public function __construct($errno, $error, $original, Logger $logger)
  14. {
  15. $this->logger = $logger;
  16. // 仅成功时
  17. if(0 === $errno) {
  18. $decode = json_decode($original, true);
  19. if(is_null($decode)) {
  20. // 错误
  21. $this->setErrorMessage(99);
  22. // 写入日志
  23. $logger->error('解析失败');
  24. } else {
  25. $this->original = $original;
  26. $this->decode = $decode;
  27. }
  28. } else {
  29. // 错误
  30. $this->setErrorMessage($errno);
  31. // 写入日志
  32. $logger->error($error);
  33. }
  34. }
  35. /**
  36. * 返回json
  37. * @return string
  38. */
  39. public function getOriginal()
  40. {
  41. return $this->original;
  42. }
  43. /**
  44. * 返回数组
  45. * @return array
  46. */
  47. public function toArray()
  48. {
  49. return $this->decode;
  50. }
  51. /**
  52. * 获得某属性时
  53. * @param string $prop_name
  54. * @return mixed
  55. */
  56. public function __get($property)
  57. {
  58. return $this->decode[ $property ] ?? null;
  59. }
  60. public function __toString()
  61. {
  62. return $this->original;
  63. }
  64. protected function setErrorMessage($errno)
  65. {
  66. $errors = [
  67. 1=> 'UNSUPPORTED_PROTOCOL',
  68. 2=> 'FAILED_INIT',
  69. 3=> 'URL_MALFORMAT',
  70. 4=> 'URL_MALFORMAT_USER',
  71. 5=> 'COULDNT_RESOLVE_PROXY',
  72. 6=> 'COULDNT_RESOLVE_HOST',
  73. 7=> 'COULDNT_CONNECT',
  74. 8=> 'FTP_WEIRD_SERVER_REPLY',
  75. 9=> 'REMOTE_ACCESS_DENIED',
  76. 11=> 'FTP_WEIRD_PASS_REPLY',
  77. 13=> 'FTP_WEIRD_PASV_REPLY',
  78. 14=>'FTP_WEIRD_227_FORMAT',
  79. 15=> 'FTP_CANT_GET_HOST',
  80. 17=> 'FTP_COULDNT_SET_TYPE',
  81. 18=> 'PARTIAL_FILE',
  82. 19=> 'FTP_COULDNT_RETR_FILE',
  83. 21=> 'QUOTE_ERROR',
  84. 22=> 'HTTP_RETURNED_ERROR',
  85. 23=> 'WRITE_ERROR',
  86. 25=> 'UPLOAD_FAILED',
  87. 26=> 'READ_ERROR',
  88. 27=> 'OUT_OF_MEMORY',
  89. 28=> 'OPERATION_TIMEDOUT',
  90. 30=> 'FTP_PORT_FAILED',
  91. 31=> 'FTP_COULDNT_USE_REST',
  92. 33=> 'RANGE_ERROR',
  93. 34=> 'HTTP_POST_ERROR',
  94. 35=> 'SSL_CONNECT_ERROR',
  95. 36=> 'BAD_DOWNLOAD_RESUME',
  96. 37=> 'FILE_COULDNT_READ_FILE',
  97. 38=> 'LDAP_CANNOT_BIND',
  98. 39=> 'LDAP_SEARCH_FAILED',
  99. 41=> 'FUNCTION_NOT_FOUND',
  100. 42=> 'ABORTED_BY_CALLBACK',
  101. 43=> 'BAD_FUNCTION_ARGUMENT',
  102. 45=> 'INTERFACE_FAILED',
  103. 47=> 'TOO_MANY_REDIRECTS',
  104. 48=> 'UNKNOWN_TELNET_OPTION',
  105. 49=> 'TELNET_OPTION_SYNTAX',
  106. 51=> 'PEER_FAILED_VERIFICATION',
  107. 52=> 'GOT_NOTHING',
  108. 53=> 'SSL_ENGINE_NOTFOUND',
  109. 54=> 'SSL_ENGINE_SETFAILED',
  110. 55=> 'SEND_ERROR',
  111. 56=> 'RECV_ERROR',
  112. 58=> 'SSL_CERTPROBLEM',
  113. 59=> 'SSL_CIPHER',
  114. 60=> 'SSL_CACERT',
  115. 61=> 'BAD_CONTENT_ENCODING',
  116. 62=> 'LDAP_INVALID_URL',
  117. 63=> 'FILESIZE_EXCEEDED',
  118. 64=> 'USE_SSL_FAILED',
  119. 65=> 'SEND_FAIL_REWIND',
  120. 66=> 'SSL_ENGINE_INITFAILED',
  121. 67=> 'LOGIN_DENIED',
  122. 68=> 'TFTP_NOTFOUND',
  123. 69=> 'TFTP_PERM',
  124. 70=> 'REMOTE_DISK_FULL',
  125. 71=> 'TFTP_ILLEGAL',
  126. 72=> 'TFTP_UNKNOWNID',
  127. 73=> 'REMOTE_FILE_EXISTS',
  128. 74=> 'TFTP_NOSUCHUSER',
  129. 75=> 'CONV_FAILED',
  130. 76=> 'CONV_REQD',
  131. 77=> 'SSL_CACERT_BADFILE',
  132. 78=> 'REMOTE_FILE_NOT_FOUND',
  133. 79=> 'SSH',
  134. 80=> 'SSL_SHUTDOWN_FAILED',
  135. 81=> 'AGAIN',
  136. 82=> 'SSL_CRL_BADFILE',
  137. 83=> 'SSL_ISSUER_ERROR',
  138. 84=> 'FTP_PRET_FAILED',
  139. 84=> 'FTP_PRET_FAILED',
  140. 85=> 'RTSP_CSEQ_ERROR',
  141. 86=> 'RTSP_SESSION_ERROR',
  142. 87=> 'FTP_BAD_FILE_LIST',
  143. 88=> 'CHUNK_FAILED',
  144. 99=> 'DECODE_ERROR',
  145. ];
  146. $this->error = $errors[ $errno ] ?? 'UNKNOWN_ERROR';
  147. }
  148. }