%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/sale/ru/delivery/pecom/ |
Current File : //home/bitrix/www/bitrix/modules/sale/ru/delivery/pecom/request.php |
<?php namespace Bitrix\Sale\Delivery\Pecom; class Request { /** * Base default URL * @const string */ const API_BASE_URL = 'https://kabinet.pecom.ru/api/v1/'; /** * User login * @var string */ protected $apiLogin = ''; /** * API access key * @var string */ protected $apiKey = ''; /** * Base URL * @var string */ protected $apiUrl = ''; public function __construct($apiLogin, $apiKey, $apiUrl = '') { $this->apiLogin = $apiLogin; $this->apiKey = $apiKey; $this->apiUrl = ($apiUrl === '') ? self::API_BASE_URL : $apiUrl; } /** * Calls API * @param string $controller Group name * @param string $action Method name * @param mixed $data Input data * @param bool $assoc Result format. true - array, false - object * @return mixed Result * @throws \Exception Case error during requesting */ public function send($controller, $action, $data, $assoc = true) { global $APPLICATION; $http = new \Bitrix\Main\Web\HttpClient(array( "version" => "1.1", "socketTimeout" => 30, "streamTimeout" => 30, "redirect" => true, "redirectMax" => 5, "disableSslVerification" => true )); $http->setHeader("Content-Type", "application/json; charset=utf-8"); $http->setHeader("Authorization", "Basic ".base64_encode($this->apiLogin.":".$this->apiKey)); if(strtolower(SITE_CHARSET) != 'utf-8') $data = $APPLICATION->ConvertCharsetArray($data, SITE_CHARSET, 'utf-8'); $jsonData = json_encode($data); $result = $http->post($this->constructApiUrl($controller, $action), $jsonData); $errors = $http->getError(); if (!$result && !empty($errors)) { $strError = ""; foreach($errors as $errorCode => $errMes) $strError .= $errorCode.": ".$errMes; throw new \Exception($strError); } else { $status = $http->getStatus(); if ($status != 200) { throw new \Exception(sprintf('HTTP error code: %d', $status)); } $resData = $http->getResult(); $decodedResult = json_decode($resData, $assoc); if(strtolower(SITE_CHARSET) != 'utf-8') $decodedResult = $APPLICATION->ConvertCharsetArray($decodedResult, 'utf-8', SITE_CHARSET); } return $decodedResult; } /** * Returns full URL for API request * @param string $controller Group name * @param string $action Method name * @return string Full URL */ protected function constructApiUrl($controller, $action) { return sprintf('%s%s/%s/', $this->apiUrl, $controller, $action); } }