mirror of
https://github.com/Karaka-Management/Resources.git
synced 2026-01-29 04:28:40 +00:00
83 lines
2.2 KiB
PHP
83 lines
2.2 KiB
PHP
<?php
|
|
namespace PayPal\Transport;
|
|
|
|
use PayPal\Core\PayPalHttpConfig;
|
|
use PayPal\Core\PayPalHttpConnection;
|
|
use PayPal\Core\PayPalLoggingManager;
|
|
use PayPal\Rest\ApiContext;
|
|
|
|
/**
|
|
* Class PayPalRestCall
|
|
*
|
|
* @package PayPal\Transport
|
|
*/
|
|
class PayPalRestCall
|
|
{
|
|
|
|
|
|
/**
|
|
* Paypal Logger
|
|
*
|
|
* @var PayPalLoggingManager logger interface
|
|
*/
|
|
private $logger;
|
|
|
|
/**
|
|
* API Context
|
|
*
|
|
* @var ApiContext
|
|
*/
|
|
private $apiContext;
|
|
|
|
|
|
/**
|
|
* Default Constructor
|
|
*
|
|
* @param ApiContext $apiContext
|
|
*/
|
|
public function __construct(ApiContext $apiContext)
|
|
{
|
|
$this->apiContext = $apiContext;
|
|
$this->logger = PayPalLoggingManager::getInstance(__CLASS__);
|
|
}
|
|
|
|
/**
|
|
* @param array $handlers Array of handlers
|
|
* @param string $path Resource path relative to base service endpoint
|
|
* @param string $method HTTP method - one of GET, POST, PUT, DELETE, PATCH etc
|
|
* @param string $data Request payload
|
|
* @param array $headers HTTP headers
|
|
* @return mixed
|
|
* @throws \PayPal\Exception\PayPalConnectionException
|
|
*/
|
|
public function execute($handlers = array(), $path, $method, $data = '', $headers = array())
|
|
{
|
|
$config = $this->apiContext->getConfig();
|
|
$httpConfig = new PayPalHttpConfig(null, $method, $config);
|
|
$headers = $headers ? $headers : array();
|
|
$httpConfig->setHeaders($headers +
|
|
array(
|
|
'Content-Type' => 'application/json'
|
|
)
|
|
);
|
|
|
|
// if proxy set via config, add it
|
|
if (!empty($config['http.Proxy'])) {
|
|
$httpConfig->setHttpProxy($config['http.Proxy']);
|
|
}
|
|
|
|
/** @var \Paypal\Handler\IPayPalHandler $handler */
|
|
foreach ($handlers as $handler) {
|
|
if (!is_object($handler)) {
|
|
$fullHandler = "\\" . (string)$handler;
|
|
$handler = new $fullHandler($this->apiContext);
|
|
}
|
|
$handler->handle($httpConfig, $data, array('path' => $path, 'apiContext' => $this->apiContext));
|
|
}
|
|
$connection = new PayPalHttpConnection($httpConfig, $config);
|
|
$response = $connection->execute($data);
|
|
|
|
return $response;
|
|
}
|
|
}
|