forked from LiveCarta/PayPal-PHP-Server-SDK
Beta Release 0.5.0 (#3)
* Automated commit message * Automated commit message * Automated commit message * Automated commit message --------- Co-authored-by: PayPalServerSDKs <server-sdks@paypal.com>
This commit is contained in:
283
src/PaypalServerSdkClient.php
Normal file
283
src/PaypalServerSdkClient.php
Normal file
@@ -0,0 +1,283 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* PaypalServerSDKLib
|
||||
*
|
||||
* This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
|
||||
*/
|
||||
|
||||
namespace PaypalServerSDKLib;
|
||||
|
||||
use Core\ClientBuilder;
|
||||
use Core\Utils\CoreHelper;
|
||||
use PaypalServerSDKLib\Authentication\ClientCredentialsAuthCredentialsBuilder;
|
||||
use PaypalServerSDKLib\Authentication\ClientCredentialsAuthManager;
|
||||
use PaypalServerSDKLib\Controllers\OAuthAuthorizationController;
|
||||
use PaypalServerSDKLib\Controllers\OrdersController;
|
||||
use PaypalServerSDKLib\Controllers\PaymentsController;
|
||||
use PaypalServerSDKLib\Controllers\VaultController;
|
||||
use PaypalServerSDKLib\Logging\LoggingConfigurationBuilder;
|
||||
use PaypalServerSDKLib\Logging\RequestLoggingConfigurationBuilder;
|
||||
use PaypalServerSDKLib\Logging\ResponseLoggingConfigurationBuilder;
|
||||
use PaypalServerSDKLib\Utils\CompatibilityConverter;
|
||||
use Unirest\Configuration;
|
||||
use Unirest\HttpClient;
|
||||
|
||||
class PaypalServerSDKClient implements ConfigurationInterface
|
||||
{
|
||||
private $orders;
|
||||
|
||||
private $payments;
|
||||
|
||||
private $vault;
|
||||
|
||||
private $oAuthAuthorization;
|
||||
|
||||
private $clientCredentialsAuthManager;
|
||||
|
||||
private $loggingConfigurationBuilder;
|
||||
|
||||
private $config;
|
||||
|
||||
private $client;
|
||||
|
||||
/**
|
||||
* @see PaypalServerSDKClientBuilder::init()
|
||||
* @see PaypalServerSDKClientBuilder::build()
|
||||
*
|
||||
* @param array $config
|
||||
*/
|
||||
public function __construct(array $config = [])
|
||||
{
|
||||
$this->config = array_merge(ConfigurationDefaults::_ALL, CoreHelper::clone($config));
|
||||
$this->clientCredentialsAuthManager = new ClientCredentialsAuthManager($this->config);
|
||||
$loggingConfiguration = null;
|
||||
if ($this->config['loggingConfiguration'] instanceof LoggingConfigurationBuilder) {
|
||||
$this->loggingConfigurationBuilder = $this->config['loggingConfiguration'];
|
||||
$loggingConfiguration = $this->loggingConfigurationBuilder->build();
|
||||
}
|
||||
$this->client = ClientBuilder::init(new HttpClient(Configuration::init($this)))
|
||||
->converter(new CompatibilityConverter())
|
||||
->jsonHelper(ApiHelper::getJsonHelper())
|
||||
->apiCallback($this->config['httpCallback'] ?? null)
|
||||
->userAgent('PayPal REST API PHP SDK, Version: 0.5.1, on OS {os-info}')
|
||||
->serverUrls(self::ENVIRONMENT_MAP[$this->getEnvironment()], Server::DEFAULT_)
|
||||
->authManagers(['Oauth2' => $this->clientCredentialsAuthManager])
|
||||
->loggingConfiguration($loggingConfiguration)
|
||||
->build();
|
||||
$this->clientCredentialsAuthManager->setClient($this->client);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a builder with the current client's configurations.
|
||||
*
|
||||
* @return PaypalServerSDKClientBuilder PaypalServerSDKClientBuilder instance
|
||||
*/
|
||||
public function toBuilder(): PaypalServerSDKClientBuilder
|
||||
{
|
||||
$builder = PaypalServerSDKClientBuilder::init()
|
||||
->timeout($this->getTimeout())
|
||||
->enableRetries($this->shouldEnableRetries())
|
||||
->numberOfRetries($this->getNumberOfRetries())
|
||||
->retryInterval($this->getRetryInterval())
|
||||
->backOffFactor($this->getBackOffFactor())
|
||||
->maximumRetryWaitTime($this->getMaximumRetryWaitTime())
|
||||
->retryOnTimeout($this->shouldRetryOnTimeout())
|
||||
->httpStatusCodesToRetry($this->getHttpStatusCodesToRetry())
|
||||
->httpMethodsToRetry($this->getHttpMethodsToRetry())
|
||||
->environment($this->getEnvironment())
|
||||
->httpCallback($this->config['httpCallback'] ?? null);
|
||||
|
||||
$clientCredentialsAuth = $this->getClientCredentialsAuthCredentialsBuilder();
|
||||
if ($clientCredentialsAuth != null) {
|
||||
$builder->clientCredentialsAuthCredentials($clientCredentialsAuth);
|
||||
}
|
||||
$loggingConfigurationBuilder = $this->getLoggingConfigurationBuilder();
|
||||
if ($loggingConfigurationBuilder != null) {
|
||||
$builder->loggingConfiguration($loggingConfigurationBuilder);
|
||||
}
|
||||
return $builder;
|
||||
}
|
||||
|
||||
public function getTimeout(): int
|
||||
{
|
||||
return $this->config['timeout'] ?? ConfigurationDefaults::TIMEOUT;
|
||||
}
|
||||
|
||||
public function shouldEnableRetries(): bool
|
||||
{
|
||||
return $this->config['enableRetries'] ?? ConfigurationDefaults::ENABLE_RETRIES;
|
||||
}
|
||||
|
||||
public function getNumberOfRetries(): int
|
||||
{
|
||||
return $this->config['numberOfRetries'] ?? ConfigurationDefaults::NUMBER_OF_RETRIES;
|
||||
}
|
||||
|
||||
public function getRetryInterval(): float
|
||||
{
|
||||
return $this->config['retryInterval'] ?? ConfigurationDefaults::RETRY_INTERVAL;
|
||||
}
|
||||
|
||||
public function getBackOffFactor(): float
|
||||
{
|
||||
return $this->config['backOffFactor'] ?? ConfigurationDefaults::BACK_OFF_FACTOR;
|
||||
}
|
||||
|
||||
public function getMaximumRetryWaitTime(): int
|
||||
{
|
||||
return $this->config['maximumRetryWaitTime'] ?? ConfigurationDefaults::MAXIMUM_RETRY_WAIT_TIME;
|
||||
}
|
||||
|
||||
public function shouldRetryOnTimeout(): bool
|
||||
{
|
||||
return $this->config['retryOnTimeout'] ?? ConfigurationDefaults::RETRY_ON_TIMEOUT;
|
||||
}
|
||||
|
||||
public function getHttpStatusCodesToRetry(): array
|
||||
{
|
||||
return $this->config['httpStatusCodesToRetry'] ?? ConfigurationDefaults::HTTP_STATUS_CODES_TO_RETRY;
|
||||
}
|
||||
|
||||
public function getHttpMethodsToRetry(): array
|
||||
{
|
||||
return $this->config['httpMethodsToRetry'] ?? ConfigurationDefaults::HTTP_METHODS_TO_RETRY;
|
||||
}
|
||||
|
||||
public function getEnvironment(): string
|
||||
{
|
||||
return $this->config['environment'] ?? ConfigurationDefaults::ENVIRONMENT;
|
||||
}
|
||||
|
||||
public function getClientCredentialsAuth(): ClientCredentialsAuth
|
||||
{
|
||||
return $this->clientCredentialsAuthManager;
|
||||
}
|
||||
|
||||
public function getClientCredentialsAuthCredentialsBuilder(): ?ClientCredentialsAuthCredentialsBuilder
|
||||
{
|
||||
if (
|
||||
empty($this->clientCredentialsAuthManager->getOAuthClientId()) &&
|
||||
empty($this->clientCredentialsAuthManager->getOAuthClientSecret())
|
||||
) {
|
||||
return null;
|
||||
}
|
||||
return ClientCredentialsAuthCredentialsBuilder::init(
|
||||
$this->clientCredentialsAuthManager->getOAuthClientId(),
|
||||
$this->clientCredentialsAuthManager->getOAuthClientSecret()
|
||||
)->oAuthToken($this->clientCredentialsAuthManager->getOAuthToken());
|
||||
}
|
||||
|
||||
public function getLoggingConfigurationBuilder(): ?LoggingConfigurationBuilder
|
||||
{
|
||||
if (is_null($this->loggingConfigurationBuilder)) {
|
||||
return null;
|
||||
}
|
||||
$config = $this->loggingConfigurationBuilder->getConfiguration();
|
||||
return LoggingConfigurationBuilder::init()
|
||||
->level($config['level'])
|
||||
->logger($config['logger'])
|
||||
->maskSensitiveHeaders($config['maskSensitiveHeaders'])
|
||||
->requestConfiguration(RequestLoggingConfigurationBuilder::init()
|
||||
->includeQueryInPath($config['requestConfiguration']['includeQueryInPath'])
|
||||
->body($config['requestConfiguration']['body'])
|
||||
->headers($config['requestConfiguration']['headers'])
|
||||
->includeHeaders(...$config['requestConfiguration']['includeHeaders'])
|
||||
->excludeHeaders(...$config['requestConfiguration']['excludeHeaders'])
|
||||
->unmaskHeaders(...$config['requestConfiguration']['unmaskHeaders']))
|
||||
->responseConfiguration(ResponseLoggingConfigurationBuilder::init()
|
||||
->body($config['responseConfiguration']['body'])
|
||||
->headers($config['responseConfiguration']['headers'])
|
||||
->includeHeaders(...$config['responseConfiguration']['includeHeaders'])
|
||||
->excludeHeaders(...$config['responseConfiguration']['excludeHeaders'])
|
||||
->unmaskHeaders(...$config['responseConfiguration']['unmaskHeaders']));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the client configuration as an associative array
|
||||
*
|
||||
* @see PaypalServerSDKClientBuilder::getConfiguration()
|
||||
*/
|
||||
public function getConfiguration(): array
|
||||
{
|
||||
return $this->toBuilder()->getConfiguration();
|
||||
}
|
||||
|
||||
/**
|
||||
* Clone this client and override given configuration options
|
||||
*
|
||||
* @see PaypalServerSDKClientBuilder::build()
|
||||
*/
|
||||
public function withConfiguration(array $config): self
|
||||
{
|
||||
return new self(array_merge($this->config, $config));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the base uri for a given server in the current environment.
|
||||
*
|
||||
* @param string $server Server name
|
||||
*
|
||||
* @return string Base URI
|
||||
*/
|
||||
public function getBaseUri(string $server = Server::DEFAULT_): string
|
||||
{
|
||||
return $this->client->getGlobalRequest($server)->getQueryUrl();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns Orders Controller
|
||||
*/
|
||||
public function getOrdersController(): OrdersController
|
||||
{
|
||||
if ($this->orders == null) {
|
||||
$this->orders = new OrdersController($this->client);
|
||||
}
|
||||
return $this->orders;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns Payments Controller
|
||||
*/
|
||||
public function getPaymentsController(): PaymentsController
|
||||
{
|
||||
if ($this->payments == null) {
|
||||
$this->payments = new PaymentsController($this->client);
|
||||
}
|
||||
return $this->payments;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns Vault Controller
|
||||
*/
|
||||
public function getVaultController(): VaultController
|
||||
{
|
||||
if ($this->vault == null) {
|
||||
$this->vault = new VaultController($this->client);
|
||||
}
|
||||
return $this->vault;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns O Auth Authorization Controller
|
||||
*/
|
||||
public function getOAuthAuthorizationController(): OAuthAuthorizationController
|
||||
{
|
||||
if ($this->oAuthAuthorization == null) {
|
||||
$this->oAuthAuthorization = new OAuthAuthorizationController($this->client);
|
||||
}
|
||||
return $this->oAuthAuthorization;
|
||||
}
|
||||
|
||||
/**
|
||||
* A map of all base urls used in different environments and servers
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private const ENVIRONMENT_MAP = [
|
||||
Environment::PRODUCTION => [Server::DEFAULT_ => 'https://api-m.paypal.com'],
|
||||
Environment::SANDBOX => [Server::DEFAULT_ => 'https://api-m.sandbox.paypal.com']
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user