/** * Checks if the passed value is valid. * * @param \Akeneo\Bundle\BatchBundle\Item\AbstractConfigurableStepElement $protocol Value to validate * @param Constraint $constraint Constraint for validation * * @api */ public function validate($protocol, Constraint $constraint) { if (!$protocol instanceof PrestashopItemStep) { return null; } $clientParameters = $this->clientParametersRegistry->getInstance($protocol->getRestApiKey(), $protocol->getPrestashopUrl(), $protocol->getDefaultStoreView(), $protocol->getHttpLogin(), $protocol->getHttpPassword()); if (null === $clientParameters->isValid() || false === $clientParameters->isValid()) { try { $xml = $this->urlExplorer->getUrlContent($clientParameters); $this->xmlChecker->checkXml($xml); $webservice = $this->webserviceGuesser->getWebservice($clientParameters); $webservice->getStoreViewsList(); $clientParameters->setValidation(true); } catch (NotReachableUrlException $e) { $clientParameters->setValidation(false); $this->context->addViolationAt('prestashopUrl', $constraint->messageUrlNotReachable . ' "' . $e->getMessage() . '"'); } catch (InvalidRestUrlException $e) { $clientParameters->setValidation(false); $this->context->addViolationAt('prestashopUrl', $constraint->messageRestNotValid . ' "' . $e->getMessage() . '"'); } catch (InvalidXmlException $e) { $clientParameters->setValidation(false); $this->context->addViolationAt('prestashopUrl', $constraint->messageXmlNotValid); } catch (InvalidCredentialException $e) { $clientParameters->setValidation(false); $this->context->addViolationAt('restApiKey', $constraint->messageApiKey); } catch (RestCallException $e) { $clientParameters->setValidation(false); $this->context->addViolationAt('restApiKey', $e->getMessage()); } catch (\Exception $e) { $clientParameters->setValidation(false); $this->context->addViolationAt('restApiKey', $e->getMessage()); } } }