SoapClient large refactoring & tests update
This commit is contained in:
234
src/BeSimple/SoapClient/Curl/Curl.php
Normal file
234
src/BeSimple/SoapClient/Curl/Curl.php
Normal file
@ -0,0 +1,234 @@
|
||||
<?php
|
||||
|
||||
namespace BeSimple\SoapClient\Curl;
|
||||
|
||||
use BeSimple\SoapClient\Curl\Http\HttpAuthenticationBasicOptions;
|
||||
use BeSimple\SoapClient\Curl\Http\HttpAuthenticationDigestOptions;
|
||||
use BeSimple\SoapClient\Curl\Http\SslCertificateOptions;
|
||||
use Exception;
|
||||
|
||||
class Curl
|
||||
{
|
||||
const CURL_SUCCESS = true;
|
||||
const CURL_FAILED = false;
|
||||
|
||||
private $curlSession;
|
||||
private $options;
|
||||
|
||||
/**
|
||||
* @param CurlOptions $options
|
||||
*/
|
||||
public function __construct(CurlOptions $options)
|
||||
{
|
||||
$this->curlSession = $this->acquireNewCurlSession($options);
|
||||
$this->options = $options;
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
{
|
||||
$this->closeCurlSession($this->curlSession);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $location HTTP location
|
||||
* @param string $request Request body
|
||||
* @param array $requestHeaders Request header strings
|
||||
* @return CurlResponse
|
||||
*/
|
||||
public function executeCurlWithCachedSession($location, $request = null, $requestHeaders = [])
|
||||
{
|
||||
return $this->executeCurlSession($this->curlSession, $this->options, $location, $request, $requestHeaders);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param CurlOptions $options
|
||||
* @param string $location HTTP location
|
||||
* @param string $request Request body
|
||||
* @param array $requestHeaders Request header strings
|
||||
* @return CurlResponse
|
||||
*/
|
||||
public function executeCurl(CurlOptions $options, $location, $request = null, $requestHeaders = [])
|
||||
{
|
||||
$curlSession = $this->acquireNewCurlSession($options);
|
||||
$curlResponse = $this->executeCurlSession($curlSession, $options, $location, $request, $requestHeaders);
|
||||
$this->closeCurlSession($curlSession);
|
||||
|
||||
return $curlResponse;
|
||||
}
|
||||
|
||||
private function acquireNewCurlSession(CurlOptions $options)
|
||||
{
|
||||
$curlSession = curl_init();
|
||||
curl_setopt_array($curlSession, [
|
||||
CURLOPT_ENCODING => '',
|
||||
CURLOPT_SSL_VERIFYPEER => false,
|
||||
CURLOPT_FAILONERROR => true,
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
||||
CURLOPT_HEADER => true,
|
||||
CURLOPT_USERAGENT => $options->getUserAgent(),
|
||||
CURLINFO_HEADER_OUT => true,
|
||||
CURLOPT_CONNECTTIMEOUT => $options->getConnectionTimeout()
|
||||
]);
|
||||
|
||||
return $curlSession;
|
||||
}
|
||||
|
||||
private function closeCurlSession($curlSession)
|
||||
{
|
||||
curl_close($curlSession);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $curlSession Result of curl_init() handle
|
||||
* @param CurlOptions $options
|
||||
* @param string $location HTTP location
|
||||
* @param string $request Request body
|
||||
* @param array $requestHeaders Request header strings
|
||||
* @return CurlResponse
|
||||
*/
|
||||
private function executeCurlSession($curlSession, CurlOptions $options, $location, $request = null, $requestHeaders = [])
|
||||
{
|
||||
curl_setopt($curlSession, CURLOPT_URL, $location);
|
||||
curl_setopt($curlSession, CURLOPT_HEADER, true);
|
||||
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
|
||||
if (!is_null($request)) {
|
||||
curl_setopt($curlSession, CURLOPT_POST, true);
|
||||
curl_setopt($curlSession, CURLOPT_POSTFIELDS, $request);
|
||||
} else {
|
||||
curl_setopt($curlSession, CURLOPT_POST, false);
|
||||
}
|
||||
if (count($requestHeaders) > 0) {
|
||||
curl_setopt($curlSession, CURLOPT_HTTPHEADER, $requestHeaders);
|
||||
}
|
||||
if (!$options->getSoapCompression() & SOAP_COMPRESSION_ACCEPT) {
|
||||
curl_setopt($curlSession, CURLOPT_ENCODING, 'identity');
|
||||
}
|
||||
if ($options->hasProxy()) {
|
||||
$proxyHost = $options->getProxy()->getHost() . $options->getProxy()->getPort();
|
||||
curl_setopt($curlSession, CURLOPT_PROXY, $proxyHost);
|
||||
if ($options->getProxy()->hasCredentials()) {
|
||||
curl_setopt($curlSession, CURLOPT_PROXYUSERPWD, $options->getProxy()->getLogin() . ':' . $options->getProxy()->getPassword());
|
||||
if ($options->getProxy()->hasAuthenticationType()) {
|
||||
curl_setopt($curlSession, CURLOPT_PROXYAUTH, $options->getProxy()->getAuthenticationType());
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($options->hasHttpAuthentication()) {
|
||||
if ($options->hasHttpAuthenticationBasic()) {
|
||||
/** @var HttpAuthenticationBasicOptions $httpAuthenticationBasic */
|
||||
$httpAuthenticationBasic = $options->getHttpAuthentication();
|
||||
curl_setopt($curlSession, CURLOPT_HTTPAUTH, $httpAuthenticationBasic->getAuthenticationType());
|
||||
curl_setopt($curlSession, CURLOPT_USERPWD, $httpAuthenticationBasic->getUsername() . ':' . $httpAuthenticationBasic->getPassword());
|
||||
} else if ($options->hasHttpAuthenticationDigest()) {
|
||||
/** @var HttpAuthenticationDigestOptions $httpAuthenticationDigest */
|
||||
$httpAuthenticationDigest = $options->getHttpAuthentication();
|
||||
curl_setopt($curlSession, CURLOPT_HTTPAUTH, $httpAuthenticationDigest->getAuthenticationType());
|
||||
} else {
|
||||
throw new Exception('Unresolved authentication type: '.get_class($options->getHttpAuthentication()));
|
||||
}
|
||||
}
|
||||
if ($options->hasSslCertificateOptions()) {
|
||||
$sslCertificateOptions = $options->getSslCertificateOptions();
|
||||
curl_setopt($curlSession, CURLOPT_SSLCERT, $sslCertificateOptions->getCertificateLocalPath());
|
||||
if ($sslCertificateOptions->hasCertificatePassPhrase()) {
|
||||
curl_setopt($curlSession, CURLOPT_SSLCERTPASSWD, $sslCertificateOptions->getCertificatePassPhrase());
|
||||
}
|
||||
if ($sslCertificateOptions->hasCertificateAuthorityInfo()) {
|
||||
curl_setopt($curlSession, CURLOPT_CAINFO, $sslCertificateOptions->getCertificateAuthorityInfo());
|
||||
}
|
||||
if ($sslCertificateOptions->hasCertificateAuthorityPath()) {
|
||||
curl_setopt($curlSession, CURLOPT_CAPATH, $sslCertificateOptions->hasCertificateAuthorityPath());
|
||||
}
|
||||
}
|
||||
$executeSoapCallResponse = $this->executeHttpCall($curlSession, $options);
|
||||
|
||||
$httpRequestHeadersAsString = curl_getinfo($curlSession, CURLINFO_HEADER_OUT);
|
||||
$headerSize = curl_getinfo($curlSession, CURLINFO_HEADER_SIZE);
|
||||
$httpResponseCode = curl_getinfo($curlSession, CURLINFO_HTTP_CODE);
|
||||
$httpResponseContentType = curl_getinfo($curlSession, CURLINFO_CONTENT_TYPE);;
|
||||
preg_match('/HTTP\/(1\.[0-1]+) ([0-9]{3}) (.*)/', $executeSoapCallResponse, $httpResponseMessages);
|
||||
$httpResponseMessage = trim(array_pop($httpResponseMessages));
|
||||
$curlErrorMessage = sprintf(
|
||||
'Curl error "%s" with message: %s occurred while connecting to %s',
|
||||
curl_errno($curlSession),
|
||||
curl_error($curlSession),
|
||||
$location
|
||||
);
|
||||
|
||||
if ($executeSoapCallResponse === false) {
|
||||
|
||||
return new CurlResponse(
|
||||
$httpRequestHeadersAsString,
|
||||
$httpResponseCode,
|
||||
$httpResponseMessage,
|
||||
$httpResponseContentType,
|
||||
self::CURL_FAILED,
|
||||
$curlErrorMessage
|
||||
);
|
||||
}
|
||||
|
||||
return new CurlResponse(
|
||||
$httpRequestHeadersAsString,
|
||||
$httpResponseCode,
|
||||
$httpResponseMessage,
|
||||
$httpResponseContentType,
|
||||
self::CURL_SUCCESS,
|
||||
null,
|
||||
substr($executeSoapCallResponse, 0, $headerSize),
|
||||
substr($executeSoapCallResponse, $headerSize)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom curl_exec wrapper that allows to follow redirects when specific
|
||||
* http response code is set. SOAP only allows 307.
|
||||
*
|
||||
* @param mixed $curlSession Result of curl_init() handle
|
||||
* @param CurlOptions $options
|
||||
* @param int $executedRedirects
|
||||
* @return string|null
|
||||
* @throws Exception
|
||||
*/
|
||||
private function executeHttpCall($curlSession, CurlOptions $options, $executedRedirects = 0)
|
||||
{
|
||||
if ($executedRedirects > $options->getFollowLocationMaxRedirects()) {
|
||||
throw new Exception('Cannot executeHttpCall - too many redirects: ' . $executedRedirects);
|
||||
}
|
||||
$curlExecResponse = curl_exec($curlSession);
|
||||
$httpResponseCode = curl_getinfo($curlSession, CURLINFO_HTTP_CODE);
|
||||
if ($httpResponseCode === 307) {
|
||||
$newUrl = $this->getRedirectUrlFromResponseHeaders($curlSession, $curlExecResponse);
|
||||
curl_setopt($curlSession, CURLOPT_URL, $newUrl);
|
||||
|
||||
return $this->executeHttpCall($curlSession, $options, ++$executedRedirects);
|
||||
}
|
||||
|
||||
return $curlExecResponse;
|
||||
}
|
||||
|
||||
private function getRedirectUrlFromResponseHeaders($curlSession, $curlExecResponse)
|
||||
{
|
||||
$curlExecResponseHeaders = substr($curlExecResponse, 0, curl_getinfo($curlSession, CURLINFO_HEADER_SIZE));
|
||||
$matches = [];
|
||||
preg_match('/Location:(.*?)\n/', $curlExecResponseHeaders, $matches);
|
||||
$url = trim(array_pop($matches));
|
||||
|
||||
if (($url = @parse_url($url)) !== false) {
|
||||
$lastUrl = parse_url(curl_getinfo($curlSession, CURLINFO_EFFECTIVE_URL));
|
||||
if (!isset($url['scheme'])) {
|
||||
$url['scheme'] = $lastUrl['scheme'];
|
||||
}
|
||||
if (!isset($url['host'])) {
|
||||
$url['host'] = $lastUrl['host'];
|
||||
}
|
||||
if (!isset($url['path'])) {
|
||||
$url['path'] = $lastUrl['path'];
|
||||
}
|
||||
|
||||
return $url['scheme'] . '://' . $url['host'] . $url['path'] . ($url['query'] ? '?' . $url['query'] : '');
|
||||
}
|
||||
|
||||
throw new Exception('Cannot parse WSDL url redirect: ' . $url);
|
||||
}
|
||||
}
|
126
src/BeSimple/SoapClient/Curl/CurlOptions.php
Normal file
126
src/BeSimple/SoapClient/Curl/CurlOptions.php
Normal file
@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
namespace BeSimple\SoapClient\Curl;
|
||||
|
||||
use BeSimple\SoapClient\Curl\Http\HttpAuthenticationDigestOptions;
|
||||
use BeSimple\SoapClient\Curl\Http\HttpAuthenticationInterface;
|
||||
use BeSimple\SoapClient\Curl\Http\HttpAuthenticationBasicOptions;
|
||||
use BeSimple\SoapClient\Curl\Http\SslCertificateOptions;
|
||||
use BeSimple\SoapClient\SoapServerProxy\SoapServerProxy;
|
||||
|
||||
class CurlOptions
|
||||
{
|
||||
const DEFAULT_USER_AGENT = 'BeSimpleSoap';
|
||||
const SOAP_COMPRESSION_NONE = null;
|
||||
const SOAP_COMPRESSION_GZIP = SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP;
|
||||
const SOAP_COMPRESSION_DEFLATE = SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_DEFLATE;
|
||||
|
||||
private $userAgent;
|
||||
private $followLocationMaxRedirects;
|
||||
private $soapCompression;
|
||||
private $connectionTimeout;
|
||||
private $proxy;
|
||||
private $httpAuthentication;
|
||||
private $sslCertificateOptions;
|
||||
|
||||
/**
|
||||
* @param string $userAgent
|
||||
* @param int $followLocationMaxRedirects
|
||||
* @param CurlOptions::SOAP_COMPRESSION_NONE|CurlOptions::SOAP_COMPRESSION_GZIP|CurlOptions::SOAP_COMPRESSION_DEFLATE $soapCompression
|
||||
* @param int $connectionTimeout
|
||||
* @param SoapServerProxy|null $proxy
|
||||
* @param HttpAuthenticationInterface|null $httpAuthentication
|
||||
* @param SslCertificateOptions|null $sslCertificateOptions
|
||||
*/
|
||||
public function __construct(
|
||||
$userAgent,
|
||||
$followLocationMaxRedirects,
|
||||
$soapCompression,
|
||||
$connectionTimeout,
|
||||
SoapServerProxy $proxy = null,
|
||||
HttpAuthenticationInterface $httpAuthentication = null,
|
||||
SslCertificateOptions $sslCertificateOptions = null
|
||||
) {
|
||||
$this->userAgent = $userAgent;
|
||||
$this->followLocationMaxRedirects = $followLocationMaxRedirects;
|
||||
$this->soapCompression = $soapCompression;
|
||||
$this->connectionTimeout = $connectionTimeout;
|
||||
$this->proxy = $proxy;
|
||||
$this->httpAuthentication = $httpAuthentication;
|
||||
$this->sslCertificateOptions = $sslCertificateOptions;
|
||||
}
|
||||
|
||||
public function getUserAgent()
|
||||
{
|
||||
return $this->userAgent;
|
||||
}
|
||||
|
||||
public function getFollowLocationMaxRedirects()
|
||||
{
|
||||
return $this->followLocationMaxRedirects;
|
||||
}
|
||||
|
||||
public function getSoapCompression()
|
||||
{
|
||||
return $this->soapCompression;
|
||||
}
|
||||
|
||||
public function getConnectionTimeout()
|
||||
{
|
||||
return $this->connectionTimeout;
|
||||
}
|
||||
|
||||
public function getProxy()
|
||||
{
|
||||
return $this->proxy;
|
||||
}
|
||||
|
||||
public function getHttpAuthentication()
|
||||
{
|
||||
return $this->httpAuthentication;
|
||||
}
|
||||
|
||||
public function getSslCertificateOptions()
|
||||
{
|
||||
return $this->sslCertificateOptions;
|
||||
}
|
||||
|
||||
public function hasProxy()
|
||||
{
|
||||
return $this->proxy !== null;
|
||||
}
|
||||
|
||||
public function hasHttpAuthentication()
|
||||
{
|
||||
return $this->httpAuthentication !== null;
|
||||
}
|
||||
|
||||
public function hasSslCertificateOptions()
|
||||
{
|
||||
return $this->sslCertificateOptions !== null;
|
||||
}
|
||||
|
||||
public function hasHttpAuthenticationBasic()
|
||||
{
|
||||
if ($this->hasHttpAuthentication()) {
|
||||
if ($this->getHttpAuthentication() instanceof HttpAuthenticationBasicOptions) {
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function hasHttpAuthenticationDigest()
|
||||
{
|
||||
if ($this->hasHttpAuthentication()) {
|
||||
if ($this->getHttpAuthentication() instanceof HttpAuthenticationDigestOptions) {
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
79
src/BeSimple/SoapClient/Curl/CurlOptionsBuilder.php
Normal file
79
src/BeSimple/SoapClient/Curl/CurlOptionsBuilder.php
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace BeSimple\SoapClient\Curl;
|
||||
|
||||
use BeSimple\SoapClient\Curl\Http\HttpAuthenticationDigestOptions;
|
||||
use BeSimple\SoapClient\Curl\Http\SslCertificateOptions;
|
||||
use BeSimple\SoapClient\SoapOptions\SoapClientOptions;
|
||||
use BeSimple\SoapClient\SoapServerAuthentication\SoapServerAuthenticationBasic;
|
||||
use BeSimple\SoapClient\SoapServerAuthentication\SoapServerAuthenticationDigest;
|
||||
use BeSimple\SoapClient\Curl\Http\HttpAuthenticationBasicOptions;
|
||||
use Exception;
|
||||
|
||||
class CurlOptionsBuilder
|
||||
{
|
||||
const DEFAULT_MAX_REDIRECTS = 10;
|
||||
const DEFAULT_CONNECTION_TIMEOUT = 10;
|
||||
|
||||
public static function buildDefault()
|
||||
{
|
||||
return new CurlOptions(
|
||||
CurlOptions::DEFAULT_USER_AGENT,
|
||||
self::DEFAULT_MAX_REDIRECTS,
|
||||
CurlOptions::SOAP_COMPRESSION_NONE,
|
||||
self::DEFAULT_CONNECTION_TIMEOUT
|
||||
);
|
||||
}
|
||||
|
||||
public static function buildForSoapClient(SoapClientOptions $soapClientOptions)
|
||||
{
|
||||
return new CurlOptions(
|
||||
$soapClientOptions->getUserAgent(),
|
||||
self::DEFAULT_MAX_REDIRECTS,
|
||||
$soapClientOptions->getCompression(),
|
||||
self::DEFAULT_CONNECTION_TIMEOUT,
|
||||
$soapClientOptions->getProxy(),
|
||||
self::getHttpAuthOptions($soapClientOptions),
|
||||
self::getSslCertificateOptions($soapClientOptions)
|
||||
);
|
||||
}
|
||||
|
||||
private static function getHttpAuthOptions(SoapClientOptions $soapClientOptions)
|
||||
{
|
||||
if ($soapClientOptions->hasAuthentication()) {
|
||||
if ($soapClientOptions->hasAuthenticationBasic()) {
|
||||
/** @var SoapServerAuthenticationBasic $basicAuthentication */
|
||||
$basicAuthentication = $soapClientOptions->getAuthentication();
|
||||
|
||||
return new HttpAuthenticationBasicOptions(
|
||||
$basicAuthentication->getLogin(),
|
||||
$basicAuthentication->getPassword()
|
||||
);
|
||||
|
||||
} else if ($soapClientOptions->hasAuthenticationDigest()) {
|
||||
|
||||
return new HttpAuthenticationDigestOptions();
|
||||
|
||||
} else {
|
||||
throw new Exception('Unresolved authentication type: '.get_class($soapClientOptions->getAuthentication()));
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static function getSslCertificateOptions(SoapClientOptions $soapClientOptions)
|
||||
{
|
||||
if ($soapClientOptions->hasAuthenticationDigest()) {
|
||||
/** @var SoapServerAuthenticationDigest $digestAuthentication */
|
||||
$digestAuthentication = $soapClientOptions->getAuthentication();
|
||||
|
||||
return new SslCertificateOptions(
|
||||
$digestAuthentication->getLocalCert(),
|
||||
$digestAuthentication->getPassPhrase()
|
||||
);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
100
src/BeSimple/SoapClient/Curl/CurlResponse.php
Normal file
100
src/BeSimple/SoapClient/Curl/CurlResponse.php
Normal file
@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace BeSimple\SoapClient\Curl;
|
||||
|
||||
class CurlResponse
|
||||
{
|
||||
private $httpRequestHeaders;
|
||||
private $httpResponseStatusCode;
|
||||
private $httpResponseStatusMessage;
|
||||
private $httpResponseContentType;
|
||||
private $curlStatus;
|
||||
private $curlErrorMessage;
|
||||
private $responseHeader;
|
||||
private $responseBody;
|
||||
|
||||
public function __construct(
|
||||
$httpRequestHeaders,
|
||||
$httpResponseStatusCode,
|
||||
$httpResponseStatusMessage,
|
||||
$httpResponseContentType,
|
||||
$curlStatus,
|
||||
$curlErrorMessage = null,
|
||||
$responseHeader = null,
|
||||
$responseBody = null
|
||||
) {
|
||||
$this->httpRequestHeaders = $httpRequestHeaders;
|
||||
$this->httpResponseStatusCode = $httpResponseStatusCode;
|
||||
$this->httpResponseStatusMessage = $httpResponseStatusMessage;
|
||||
$this->httpResponseContentType = $httpResponseContentType;
|
||||
$this->curlStatus = $curlStatus;
|
||||
$this->curlErrorMessage = $curlErrorMessage;
|
||||
$this->responseHeader = $responseHeader;
|
||||
$this->responseBody = $responseBody;
|
||||
}
|
||||
|
||||
public function getHttpRequestHeaders()
|
||||
{
|
||||
return $this->httpRequestHeaders;
|
||||
}
|
||||
|
||||
public function getHttpResponseStatusCode()
|
||||
{
|
||||
return $this->httpResponseStatusCode;
|
||||
}
|
||||
|
||||
public function getHttpResponseStatusMessage()
|
||||
{
|
||||
return $this->httpResponseStatusMessage;
|
||||
}
|
||||
|
||||
public function getHttpResponseContentType()
|
||||
{
|
||||
return $this->httpResponseContentType;
|
||||
}
|
||||
|
||||
public function getCurlStatus()
|
||||
{
|
||||
return $this->curlStatus;
|
||||
}
|
||||
|
||||
public function curlStatusSuccess()
|
||||
{
|
||||
return $this->curlStatus === Curl::CURL_SUCCESS;
|
||||
}
|
||||
|
||||
public function curlStatusFailed()
|
||||
{
|
||||
return $this->curlStatus === Curl::CURL_FAILED;
|
||||
}
|
||||
|
||||
public function hasCurlErrorMessage()
|
||||
{
|
||||
return $this->curlErrorMessage !== null;
|
||||
}
|
||||
|
||||
public function getCurlErrorMessage()
|
||||
{
|
||||
return $this->curlErrorMessage;
|
||||
}
|
||||
|
||||
public function hasResponseHeader()
|
||||
{
|
||||
return $this->responseHeader !== null;
|
||||
}
|
||||
|
||||
public function getResponseHeader()
|
||||
{
|
||||
return $this->responseHeader;
|
||||
}
|
||||
|
||||
public function hasResponseBody()
|
||||
{
|
||||
return $this->responseBody !== null;
|
||||
}
|
||||
|
||||
public function getResponseBody()
|
||||
{
|
||||
return $this->responseBody;
|
||||
}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace BeSimple\SoapClient\Curl\Http;
|
||||
|
||||
class HttpAuthenticationBasicOptions implements HttpAuthenticationInterface
|
||||
{
|
||||
private $username;
|
||||
private $password;
|
||||
|
||||
/**
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
*/
|
||||
public function __construct($username, $password)
|
||||
{
|
||||
$this->username = $username;
|
||||
$this->password = $password;
|
||||
}
|
||||
|
||||
public function getUsername()
|
||||
{
|
||||
return $this->username;
|
||||
}
|
||||
|
||||
public function getPassword()
|
||||
{
|
||||
return $this->password;
|
||||
}
|
||||
|
||||
public function getAuthenticationType()
|
||||
{
|
||||
return HttpAuthenticationInterface::AUTHENTICATION_TYPE_BASIC;
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace BeSimple\SoapClient\Curl\Http;
|
||||
|
||||
class HttpAuthenticationDigestOptions implements HttpAuthenticationInterface
|
||||
{
|
||||
public function getAuthenticationType()
|
||||
{
|
||||
return HttpAuthenticationInterface::AUTHENTICATION_TYPE_DIGEST;
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace BeSimple\SoapClient\Curl\Http;
|
||||
|
||||
interface HttpAuthenticationInterface
|
||||
{
|
||||
const AUTHENTICATION_TYPE_ANY = CURLAUTH_ANY;
|
||||
const AUTHENTICATION_TYPE_BASIC = CURLAUTH_BASIC;
|
||||
const AUTHENTICATION_TYPE_DIGEST = CURLAUTH_DIGEST;
|
||||
|
||||
/**
|
||||
* @return string choice from self::AUTHENTICATION_TYPE_ANY|self::AUTHENTICATION_TYPE_BASIC|self::AUTHENTICATION_TYPE_DIGEST
|
||||
*/
|
||||
public function getAuthenticationType();
|
||||
}
|
64
src/BeSimple/SoapClient/Curl/Http/SslCertificateOptions.php
Normal file
64
src/BeSimple/SoapClient/Curl/Http/SslCertificateOptions.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace BeSimple\SoapClient\Curl\Http;
|
||||
|
||||
class SslCertificateOptions
|
||||
{
|
||||
private $certificateLocalPath;
|
||||
private $certificatePassPhrase;
|
||||
private $certificateAuthorityInfo;
|
||||
private $certificateAuthorityPath;
|
||||
|
||||
/**
|
||||
* @param string $certificateLocalPath
|
||||
* @param string $certificatePassPhrase
|
||||
* @param string $certificateAuthorityInfo
|
||||
* @param string $certificateAuthorityPath
|
||||
*/
|
||||
public function __construct(
|
||||
$certificateLocalPath,
|
||||
$certificatePassPhrase = null,
|
||||
$certificateAuthorityInfo = null,
|
||||
$certificateAuthorityPath = null
|
||||
) {
|
||||
$this->certificateLocalPath = $certificateLocalPath;
|
||||
$this->certificatePassPhrase = $certificatePassPhrase;
|
||||
$this->certificateAuthorityInfo = $certificateAuthorityInfo;
|
||||
$this->certificateAuthorityPath = $certificateAuthorityPath;
|
||||
}
|
||||
|
||||
public function getCertificateLocalPath()
|
||||
{
|
||||
return $this->certificateLocalPath;
|
||||
}
|
||||
|
||||
public function getCertificatePassPhrase()
|
||||
{
|
||||
return $this->certificatePassPhrase;
|
||||
}
|
||||
|
||||
public function getCertificateAuthorityInfo()
|
||||
{
|
||||
return $this->certificateAuthorityInfo;
|
||||
}
|
||||
|
||||
public function getCertificateAuthorityPath()
|
||||
{
|
||||
return $this->certificateAuthorityPath;
|
||||
}
|
||||
|
||||
public function hasCertificatePassPhrase()
|
||||
{
|
||||
return $this->certificatePassPhrase !== null;
|
||||
}
|
||||
|
||||
public function hasCertificateAuthorityInfo()
|
||||
{
|
||||
return $this->certificateAuthorityInfo !== null;
|
||||
}
|
||||
|
||||
public function hasCertificateAuthorityPath()
|
||||
{
|
||||
return $this->certificateAuthorityPath !== null;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user