daryast

Untitled

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