daryast

Untitled

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