* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Adapter\Webservice\QueryHandler; use PrestaShop\PrestaShop\Core\Domain\Webservice\Exception\WebserviceKeyNotFoundException; use PrestaShop\PrestaShop\Core\Domain\Webservice\Query\GetWebserviceKeyForEditing; use PrestaShop\PrestaShop\Core\Domain\Webservice\QueryHandler\GetWebserviceKeyForEditingHandlerInterface; use PrestaShop\PrestaShop\Core\Domain\Webservice\QueryResult\EditableWebserviceKey; use PrestaShop\PrestaShop\Core\Domain\Webservice\ValueObject\WebserviceKeyId; use WebserviceKey; /** * Handles command that gets webservice key data for editing * * @internal */ final class GetWebserviceKeyForEditingHandler implements GetWebserviceKeyForEditingHandlerInterface { /** * {@inheritdoc} */ public function handle(GetWebserviceKeyForEditing $query) { $webserviceKey = $this->getLegacyWebserviceKeyObject($query->getWebserviceKeyId()); return new EditableWebserviceKey( $query->getWebserviceKeyId(), $webserviceKey->key, $webserviceKey->description, $webserviceKey->active, WebserviceKey::getPermissionForAccount($webserviceKey->key), $webserviceKey->getAssociatedShops() ); } /** * @param WebserviceKeyId $webserviceKeyId * * @return WebserviceKey */ private function getLegacyWebserviceKeyObject(WebserviceKeyId $webserviceKeyId) { $webserviceKey = new WebserviceKey($webserviceKeyId->getValue()); if ($webserviceKey->id !== $webserviceKeyId->getValue()) { throw new WebserviceKeyNotFoundException( sprintf('Webservice key with id "%d" was not found', $webserviceKeyId->getValue()) ); } return $webserviceKey; } }