daryast

Untitled

Apr 13th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.56 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. throw new Exception('Некоррекный запрос ');
  66. }
  67. $typeAndRequest = array();
  68. $typeAndRequest['type'] = $type;
  69. $typeAndRequest['requestToDb'] = $requestToDb;
  70. return $typeAndRequest;
  71. }
  72.  
  73. /**
  74. * Определяется тип сервиса
  75. * @param $exturl - адрес внешнего сервиса
  76. * @return mixed
  77. */
  78. public function getService($exturl)
  79. {
  80. $urlArray = explode('/', $exturl);
  81. $servise = end($urlArray);
  82. return $servise;
  83. }
  84.  
  85. /**
  86. * Получаем массив без данных для авторизации
  87. * @param $request
  88. * @return array
  89. */
  90. public function getClearRequest($request)
  91. {
  92. $requestToDb = json_decode($request, true);
  93. $arrayParams = array();
  94. foreach ($requestToDb as $key => $value) {
  95. $arrayParams[$key] = $value;
  96. }
  97. unset ($arrayParams['client']);
  98. return $arrayParams;
  99. }
  100.  
  101.  
  102. /**
  103. * Получаем ответ из базы заглушек или от внешнего сервиса
  104. * @param $request - полученный запрос
  105. * @param $exturl - адрес внешнего сервиса
  106. * @param $method - тип запроса (GET или POST)
  107. * @return mixed|null - ответ из базы заглушек или внешнего сервиса
  108. */
  109. public function getAnyResponse($request, $exturl, $method)
  110. {
  111. $arrayParams = $this->getClearRequest($request);
  112. $servise = $this->getService($exturl);
  113. $typeAndRequest = $this->getTypeAndRequest($servise, $arrayParams);
  114. $fake = $this->getFakeResponse(
  115. $typeAndRequest['type'],
  116. $typeAndRequest['requestToDb']
  117. );
  118. if ($fake !== NULL) {
  119.  
  120. $response = is_object($fake->field_result_json) ? $fake->field_result_json->read(50000) :
  121. $fake->field_result_json;
  122.  
  123.  
  124. } else {
  125. $response = $this->getResponse($method, $this->url, $this->header, $request);
  126. }
  127. return $response;
  128.  
  129. }
  130.  
  131. /**
  132. * Поиск соответствия в базе заглушек REF_FAKE_SERACHES
  133. * @param $type - тип запроса
  134. * @param $requestToDb - параметры запроса
  135. * @return CActiveRecord
  136. */
  137. public function getFakeResponse($type, $requestToDb)
  138. {
  139. $criteria = new CDbCriteria();
  140. $criteria->compare('"field_search_type"', $type);
  141. $criteria->compare('"field_request_string"', $requestToDb);
  142. $fake = RefFakeSeraches::model()->find($criteria);
  143. return $fake;
  144. }
  145. }
Advertisement
Add Comment
Please, Sign In to add comment