daryast

Untitled

Apr 14th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.76 KB | None | 0 0
  1. <?php
  2.  
  3. class EsService extends ExternalService
  4. {
  5.  
  6. public $header;
  7. public $url;
  8.  
  9. public function __construct($exturl)
  10. {
  11. $this->url = Yii::app()->params['service'] . '/' . $exturl;
  12. $this->header = array(
  13. 'content-type' => 'application/json'
  14. );
  15. }
  16.  
  17.  
  18. /**
  19. * Определение типа запроса
  20. * @param $servise - сервис, в который идет запрос
  21. * @param $arrayParams - параметры запроса
  22. * @return array - массив с типом запроса и подготовленным запросом для REF_FAKE_SERACHES
  23. * @throws Exception
  24. */
  25. public function getTypeAndRequest($servise, $arrayParams)
  26. {
  27.  
  28. switch ($servise) {
  29. case 'driver':
  30. if (array_key_exists('driver_license', $arrayParams)) {
  31. $type = 'license';
  32. $requestToDb = $arrayParams['driver_license'];
  33. } else {
  34. $type = 'fio';
  35. $requestToDb = $arrayParams['name'] . ' ' . $arrayParams['surname'] . ' ' . $arrayParams['patronymic'] . ' ' . $arrayParams['subdate'][0] . $arrayParams['subdate'][1] . '.' . $arrayParams['subdate'][2] . $arrayParams['subdate'][3] . '.' . $arrayParams['year'];
  36. }
  37. break;
  38. case 'fis':
  39. $type = 'fis';
  40. $requestToDb = $arrayParams['name'] . ' ' . $arrayParams['surname'] . ' ' . $arrayParams['patronymic'] . ' ' . $arrayParams['subdate'][0] . $arrayParams['subdate'][1] . '.' . $arrayParams['subdate'][2] . $arrayParams['subdate'][3] . '.' . $arrayParams['year'];
  41. break;
  42. case 'wanted':
  43. $type = 'wanted';
  44. $requestToDb = $arrayParams['surname'] . ' ' . $arrayParams['name'] . ' ' . $arrayParams['year'];
  45. break;
  46. case 'vehicle':
  47. $type = 'plate_number';
  48. $requestToDb = $arrayParams['licensePlateNumber'];
  49. break;
  50. case 'stealing';
  51. $stealingTypes = array(
  52. 'vin' => 'vin',
  53. 'sts' => 'sts',
  54. 'pts' => 'pts',
  55. 'engineNumbernmotor' => 'nmotor',
  56. 'chassisNumber' => 'nshasi',
  57. 'bodyNumber' => 'nkuzov',
  58. );
  59. ///После удаления данных клиента остается один элемент массива
  60. $key = key($arrayParams); // получаем ключ оставшегося элемента массива
  61. $type = $stealingTypes[$key];
  62. $requestToDb = $arrayParams[$key];
  63. break;
  64. default:
  65. $type = 'withoutDb';
  66. $requestToDb = null;
  67.  
  68. }
  69. $typeAndRequest = array();
  70. $typeAndRequest['type'] = $type;
  71. $typeAndRequest['requestToDb'] = $requestToDb;
  72. return $typeAndRequest;
  73. }
  74.  
  75. /**
  76. * Определяется тип сервиса
  77. * @param $exturl - адрес внешнего сервиса
  78. * @return mixed
  79. */
  80. public function getService($exturl)
  81. {
  82. $urlArray = explode('/', $exturl);
  83. $servise = end($urlArray);
  84. return $servise;
  85. }
  86.  
  87. /**
  88. * Получаем массив без данных для авторизации
  89. * @param $request
  90. * @return array
  91. */
  92. public function getClearRequest($request)
  93. {
  94. $requestToDb = json_decode($request, true);
  95. $arrayParams = array();
  96. foreach ($requestToDb as $key => $value) {
  97. $arrayParams[$key] = $value;
  98. }
  99. unset ($arrayParams['client']);
  100. return $arrayParams;
  101. }
  102.  
  103.  
  104. /**
  105. * Получаем ответ из базы заглушек или от внешнего сервиса
  106. * @param $request - полученный запрос
  107. * @param $exturl - адрес внешнего сервиса
  108. * @param $method - тип запроса (GET или POST)
  109. * @return mixed|null - ответ из базы заглушек или внешнего сервиса
  110. */
  111. public function getAnyResponse($request, $exturl, $method)
  112. {
  113. $arrayParams = $this->getClearRequest($request);
  114. $servise = $this->getService($exturl);
  115. $typeAndRequest = $this->getTypeAndRequest($servise, $arrayParams);
  116. if ($typeAndRequest['type'] == 'withoutDb') {
  117. $response = $this->getResponse($method, $this->url, $this->header, $request);
  118. } else {
  119. $fake = $this->getFakeResponse(
  120. $typeAndRequest['type'],
  121. $typeAndRequest['requestToDb']
  122. );
  123. if ($fake !== NULL) {
  124.  
  125. $response = is_object($fake->field_result_json) ? $fake->field_result_json->read(50000) :
  126. $fake->field_result_json;
  127.  
  128.  
  129. } else {
  130. $response = $this->getResponse($method, $this->url, $this->header, $request);
  131. }
  132. }
  133.  
  134. return $response;
  135.  
  136. }
  137.  
  138. /**
  139. * Поиск соответствия в базе заглушек REF_FAKE_SERACHES
  140. * @param $type - тип запроса
  141. * @param $requestToDb - параметры запроса
  142. * @return CActiveRecord
  143. */
  144. public function getFakeResponse($type, $requestToDb)
  145. {
  146. $criteria = new CDbCriteria();
  147. $criteria->compare('"field_search_type"', $type);
  148. $criteria->compare('"field_request_string"', $requestToDb);
  149. $fake = RefFakeSeraches::model()->find($criteria);
  150. return $fake;
  151. }
  152. }
Advertisement
Add Comment
Please, Sign In to add comment