* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace HtmlSanitizer\Extension\Iframe\Sanitizer; use HtmlSanitizer\Sanitizer\UrlSanitizerTrait; /** * @internal */ class IframeSrcSanitizer { use UrlSanitizerTrait; private $allowedSchemes; private $allowedHosts; private $allowRelativeLinks; private $forceHttps; public function __construct(array $allowedSchemes, ?array $allowedHosts, bool $allowRelativeLinks, bool $forceHttps) { $this->allowedSchemes = $allowedSchemes; $this->allowedHosts = $allowedHosts; $this->allowRelativeLinks = $allowRelativeLinks; $this->forceHttps = $forceHttps; } public function sanitize(?string $input): ?string { $allowedSchemes = $this->allowedSchemes; $allowedHosts = $this->allowedHosts; if ($this->allowRelativeLinks) { $allowedSchemes[] = null; if (\is_array($this->allowedHosts)) { $allowedHosts[] = null; } } return $this->sanitizeUrl($input, $allowedSchemes, $allowedHosts, $this->forceHttps); } }