PayPal\Handler\RestHandler::handle PHP Method

handle() public method

public handle ( PayPalHttpConfig $httpConfig, string $request, mixed $options ) : mixed | void
$httpConfig PayPal\Core\PayPalHttpConfig
$request string
$options mixed
return mixed | void
    public function handle($httpConfig, $request, $options)
    {
        $credential = $this->apiContext->getCredential();
        $config = $this->apiContext->getConfig();
        if ($credential == null) {
            // Try picking credentials from the config file
            $credMgr = PayPalCredentialManager::getInstance($config);
            $credValues = $credMgr->getCredentialObject();
            if (!is_array($credValues)) {
                throw new PayPalMissingCredentialException("Empty or invalid credentials passed");
            }
            $credential = new OAuthTokenCredential($credValues['clientId'], $credValues['clientSecret']);
        }
        if ($credential == null || !$credential instanceof OAuthTokenCredential) {
            throw new PayPalInvalidCredentialException("Invalid credentials passed");
        }
        $httpConfig->setUrl(rtrim(trim($this->_getEndpoint($config)), '/') . (isset($options['path']) ? $options['path'] : ''));
        // Overwrite Expect Header to disable 100 Continue Issue
        $httpConfig->addHeader("Expect", null);
        if (!array_key_exists("User-Agent", $httpConfig->getHeaders())) {
            $httpConfig->addHeader("User-Agent", PayPalUserAgent::getValue(PayPalConstants::SDK_NAME, PayPalConstants::SDK_VERSION));
        }
        if (!is_null($credential) && $credential instanceof OAuthTokenCredential && is_null($httpConfig->getHeader('Authorization'))) {
            $httpConfig->addHeader('Authorization', "Bearer " . $credential->getAccessToken($config), false);
        }
        if ($httpConfig->getMethod() == 'POST' || $httpConfig->getMethod() == 'PUT') {
            $httpConfig->addHeader('PayPal-Request-Id', $this->apiContext->getRequestId());
        }
        // Add any additional Headers that they may have provided
        $headers = $this->apiContext->getRequestHeaders();
        foreach ($headers as $key => $value) {
            $httpConfig->addHeader($key, $value);
        }
    }