Your IP : 216.73.217.13


Current Path : /home/rtorresani/www/vendor/magento/module-re-captcha-ui/Model/
Upload File :
Current File : //home/rtorresani/www/vendor/magento/module-re-captcha-ui/Model/ValidationConfigResolver.php

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\ReCaptchaUi\Model;

use Magento\Framework\Exception\InputException;
use Magento\ReCaptchaValidationApi\Api\Data\ValidationConfigInterface;

/**
 * Extension point for resolving reCAPTCHA Validation config
 *
 * It is NOT direct part of reCAPTCHA validation but performs role of bridge between UI and reCAPTCHA validation
 *
 * @api Class name should be used in DI for adding new Validation config providers
 *      but for config resolving need to use ValidationConfigResolverInterface
 */
class ValidationConfigResolver implements ValidationConfigResolverInterface
{
    /**
     * @var CaptchaTypeResolverInterface
     */
    private $captchaTypeResolver;

    /**
     * @var ValidationConfigProviderInterface[]
     */
    private $validationConfigProviders;

    /**
     * @param CaptchaTypeResolverInterface $captchaTypeResolver
     * @param ValidationConfigProviderInterface[] $validationConfigProviders
     * @throws InputException
     */
    public function __construct(
        CaptchaTypeResolverInterface $captchaTypeResolver,
        array $validationConfigProviders = []
    ) {
        $this->captchaTypeResolver = $captchaTypeResolver;

        foreach ($validationConfigProviders as $validationConfigProvider) {
            if (!$validationConfigProvider instanceof ValidationConfigProviderInterface) {
                throw new InputException(
                    __('Validation config provider must implement %1.', [ConfigProviderInterface::class])
                );
            }
        }
        $this->validationConfigProviders = $validationConfigProviders;
    }

    /**
     * @inheritdoc
     */
    public function get(string $key): ValidationConfigInterface
    {
        $captchaType = $this->captchaTypeResolver->getCaptchaTypeFor($key);

        if (!isset($this->validationConfigProviders[$captchaType])) {
            throw new InputException(
                __('Validation config provider for "%type" is not configured.', ['type' => $captchaType])
            );
        }
        return $this->validationConfigProviders[$captchaType]->get();
    }
}