mirror of
https://github.com/ToxicCrack/PrintABrick.git
synced 2025-05-17 21:00:09 -07:00
Initialize SoapClient with first api call
Initialize SoapClient with first api call to avoid unrecoverable exceptions
This commit is contained in:
parent
6d7f27585d
commit
738e2698ba
@ -13,7 +13,7 @@ use AppBundle\Api\Exception\ApiException;
|
||||
use AppBundle\Api\Exception\AuthenticationFailedException;
|
||||
use AppBundle\Api\Exception\CallFailedException;
|
||||
|
||||
class Brickset extends \SoapClient
|
||||
class Brickset
|
||||
{
|
||||
const WSDL = 'https://brickset.com/api/v2.asmx?WSDL';
|
||||
|
||||
@ -21,6 +21,11 @@ class Brickset extends \SoapClient
|
||||
|
||||
private $userHash = '';
|
||||
|
||||
private $options;
|
||||
|
||||
/** @var \SoapClient */
|
||||
private $soapClient;
|
||||
|
||||
/**
|
||||
* @var array The defined classes
|
||||
*/
|
||||
@ -37,32 +42,46 @@ class Brickset extends \SoapClient
|
||||
/**
|
||||
* @param string $apikey Brickset API key
|
||||
* @param array $options A array of config values
|
||||
* @param string $wsdl The wsdl file to use
|
||||
*
|
||||
* @throws ApiException
|
||||
*/
|
||||
public function __construct($apikey, $wsdl = null, array $options = [])
|
||||
public function __construct($apikey, array $options = [])
|
||||
{
|
||||
$this->apiKey = $apikey;
|
||||
|
||||
$options['cache_wsdl'] = WSDL_CACHE_NONE;
|
||||
$options['exceptions'] = true;
|
||||
$this->options['cache_wsdl'] = WSDL_CACHE_NONE;
|
||||
$this->options['exceptions'] = true;
|
||||
|
||||
foreach (self::$classmap as $key => $value) {
|
||||
if (!isset($options['classmap'][$key])) {
|
||||
$options['classmap'][$key] = $value;
|
||||
if (!isset($this->options['classmap'][$key])) {
|
||||
$this->options['classmap'][$key] = $value;
|
||||
}
|
||||
}
|
||||
if (!$wsdl) {
|
||||
$wsdl = self::WSDL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get or create new SoapClient
|
||||
*
|
||||
* @return \SoapClient
|
||||
* @throws ApiException
|
||||
*/
|
||||
private function getSoapClient() {
|
||||
if(!$this->soapClient) {
|
||||
try {
|
||||
parent::__construct($wsdl, $options);
|
||||
$this->soapClient = new \SoapClient(self::WSDL, $this->options);
|
||||
} catch (\SoapFault $exception) {
|
||||
// clear uncaught FatalErrorException
|
||||
error_clear_last();
|
||||
throw new ApiException(ApiException::BRICKSET);
|
||||
} catch (\Exception $exception) {
|
||||
// clear uncaught FatalErrorException
|
||||
error_clear_last();
|
||||
throw new ApiException(ApiException::BRICKSET);
|
||||
}
|
||||
}
|
||||
return $this->soapClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $apiKey
|
||||
@ -79,7 +98,7 @@ class Brickset extends \SoapClient
|
||||
try {
|
||||
$this->checkApiKey();
|
||||
|
||||
$result = $this->__soapCall($method, [$parameters]);
|
||||
$result = $this->getSoapClient()->__soapCall($method, [$parameters]);
|
||||
|
||||
if (property_exists($result, $method.'Result')) {
|
||||
return $result->{$method.'Result'};
|
||||
@ -89,7 +108,6 @@ class Brickset extends \SoapClient
|
||||
} catch (\SoapFault $e) {
|
||||
throw new CallFailedException(ApiException::BRICKSET);
|
||||
} catch (\Exception $e) {
|
||||
dump($e);
|
||||
throw new ApiException(ApiException::BRICKSET);
|
||||
}
|
||||
}
|
||||
@ -279,7 +297,7 @@ class Brickset extends \SoapClient
|
||||
{
|
||||
$parameters['apiKey'] = $this->apiKey;
|
||||
|
||||
if ($this->__soapCall('checkKey', [$parameters])->checkKeyResult != 'OK') {
|
||||
if ($this->getSoapClient()->__soapCall('checkKey', [$parameters])->checkKeyResult != 'OK') {
|
||||
throw new AuthenticationFailedException(ApiException::BRICKSET);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user