Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class EsService extends ExternalService
- {
- public $header;
- public $url;
- public function __construct($exturl)
- {
- $this->url = Yii::app()->params['service'] . '/' . $exturl;
- $this->header = array(
- 'content-type' => 'application/json'
- );
- }
- /**
- * Определение типа запроса
- * @param $servise - сервис, в который идет запрос
- * @param $arrayParams - параметры запроса
- * @return array - массив с типом запроса и подготовленным запросом для REF_FAKE_SERACHES
- * @throws Exception
- */
- public function getTypeAndRequest($servise, $arrayParams)
- {
- switch ($servise) {
- case 'driver':
- if (array_key_exists('driver_license', $arrayParams)) {
- $type = 'license';
- $requestToDb = $arrayParams['driver_license'];
- } else {
- $type = 'fio';
- $requestToDb = $arrayParams['name'] . ' ' . $arrayParams['surname'] . ' ' . $arrayParams['patronymic'] . ' ' . $arrayParams['subdate'][0] . $arrayParams['subdate'][1] . '.' . $arrayParams['subdate'][2] . $arrayParams['subdate'][3] . '.' . $arrayParams['year'];
- }
- break;
- case 'fis':
- $type = 'fis';
- $requestToDb = $arrayParams['name'] . ' ' . $arrayParams['surname'] . ' ' . $arrayParams['patronymic'] . ' ' . $arrayParams['subdate'][0] . $arrayParams['subdate'][1] . '.' . $arrayParams['subdate'][2] . $arrayParams['subdate'][3] . '.' . $arrayParams['year'];
- break;
- case 'wanted':
- $type = 'wanted';
- $requestToDb = $arrayParams['surname'] . ' ' . $arrayParams['name'] . ' ' . $arrayParams['year'];
- break;
- case 'vehicle':
- $type = 'plate_number';
- $requestToDb = $arrayParams['licensePlateNumber'];
- break;
- case 'stealing';
- $stealingTypes = array(
- 'vin' => 'vin',
- 'sts' => 'sts',
- 'pts' => 'pts',
- 'engineNumbernmotor' => 'nmotor',
- 'chassisNumber' => 'nshasi',
- 'bodyNumber' => 'nkuzov',
- );
- ///После удаления данных клиента остается один элемент массива
- $key = key($arrayParams); // получаем ключ оставшегося элемента массива
- $type = $stealingTypes[$key];
- $requestToDb = $arrayParams[$key];
- break;
- default:
- $type = 'withoutDb';
- $requestToDb = null;
- }
- $typeAndRequest = array();
- $typeAndRequest['type'] = $type;
- $typeAndRequest['requestToDb'] = $requestToDb;
- return $typeAndRequest;
- }
- /**
- * Определяется тип сервиса
- * @param $exturl - адрес внешнего сервиса
- * @return mixed
- */
- public function getService($exturl)
- {
- $urlArray = explode('/', $exturl);
- $servise = end($urlArray);
- return $servise;
- }
- /**
- * Получаем массив без данных для авторизации
- * @param $request
- * @return array
- */
- public function getClearRequest($request)
- {
- $requestToDb = json_decode($request, true);
- $arrayParams = array();
- foreach ($requestToDb as $key => $value) {
- $arrayParams[$key] = $value;
- }
- unset ($arrayParams['client']);
- return $arrayParams;
- }
- /**
- * Получаем ответ из базы заглушек или от внешнего сервиса
- * @param $request - полученный запрос
- * @param $exturl - адрес внешнего сервиса
- * @param $method - тип запроса (GET или POST)
- * @return mixed|null - ответ из базы заглушек или внешнего сервиса
- */
- public function getAnyResponse($request, $exturl, $method)
- {
- $arrayParams = $this->getClearRequest($request);
- $servise = $this->getService($exturl);
- $typeAndRequest = $this->getTypeAndRequest($servise, $arrayParams);
- if ($typeAndRequest['type'] == 'withoutDb') {
- $response = $this->getResponse($method, $this->url, $this->header, $request);
- } else {
- $fake = $this->getFakeResponse(
- $typeAndRequest['type'],
- $typeAndRequest['requestToDb']
- );
- if ($fake !== NULL) {
- $response = is_object($fake->field_result_json) ? $fake->field_result_json->read(50000) :
- $fake->field_result_json;
- } else {
- $response = $this->getResponse($method, $this->url, $this->header, $request);
- }
- }
- return $response;
- }
- /**
- * Поиск соответствия в базе заглушек REF_FAKE_SERACHES
- * @param $type - тип запроса
- * @param $requestToDb - параметры запроса
- * @return CActiveRecord
- */
- public function getFakeResponse($type, $requestToDb)
- {
- $criteria = new CDbCriteria();
- $criteria->compare('"field_search_type"', $type);
- $criteria->compare('"field_request_string"', $requestToDb);
- $fake = RefFakeSeraches::model()->find($criteria);
- return $fake;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment