%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 18.218.135.227 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/main/lib/service/microservice/ |
Upload File : |
<?php namespace Bitrix\Main\Service\MicroService; use Bitrix\Main\ArgumentException; use Bitrix\Main\Error; use Bitrix\Main\Result; use Bitrix\Main\Web\HttpClient; use Bitrix\Main\Web\Json; /** * Class BaseSender */ abstract class BaseSender { public function __construct() { } /** * @param string $action * @param array $parameters * @return Result * @throws ArgumentException */ public function performRequest($action, array $parameters = []): Result { $result = new Result(); $httpClient = new HttpClient($this->getHttpClientParameters()); $url = $this->getServiceUrl() . "/api/?action=".$action; $request = [ "action" => $action, "serializedParameters" => base64_encode(gzencode(Json::encode($parameters))), ]; $request["BX_TYPE"] = Client::getPortalType(); $request["BX_LICENCE"] = Client::getLicenseCode(); $request["SERVER_NAME"] = Client::getServerName(); $request["BX_HASH"] = Client::signRequest($request); $result = $httpClient->query(HttpClient::HTTP_POST, $url, $request); return $this->buildResult($httpClient, $result); } protected function buildResult(HttpClient $httpClient, bool $requestResult): Result { return $this->createAnswerForJsonResponse( $requestResult, $httpClient->getResult(), $httpClient->getError(), $httpClient->getStatus() ); } protected function createAnswerForJsonResponse($queryResult, $response, $errors, $status): Result { $result = new Result(); if(!$queryResult) { foreach ($errors as $code => $message) { $result->addError(new Error($message, $code)); } return $result; } if($status != 200) { $result->addError(new Error("Server returned " . $status . " code", "WRONG_SERVER_RESPONSE")); return $result; } if($response == "") { $result->addError(new Error("Empty server response", "EMPTY_SERVER_RESPONSE")); return $result; } try { $parsedResponse = Json::decode($response); } catch (\Exception $e) { $result->addError(new Error("Could not parse server response. Raw response: " . $response)); return $result; } if($parsedResponse["status"] === "error") { foreach ($parsedResponse["errors"] as $error) { $result->addError(new Error($error["message"], $error["code"], $error["customData"])); } } else if(is_array($parsedResponse["data"])) { $result->setData($parsedResponse["data"]); } return $result; } /** * @return array */ public function getHttpClientParameters(): array { return [ "socketTimeout" => 10, "streamTimeout" => 30, "disableSslVerification" => true ]; } protected abstract function getServiceUrl(): string; }