ok
Direktori : /home2/selectio/public_html/innerstore/vendor/spatie/robots-txt/src/ |
Current File : /home2/selectio/public_html/innerstore/vendor/spatie/robots-txt/src/RobotsHeaders.php |
<?php namespace Spatie\Robots; use InvalidArgumentException; class RobotsHeaders { protected array $robotHeadersProperties = []; public static function readFrom(string $source): self { $content = @file_get_contents($source); if ($content === false) { throw new InvalidArgumentException("Could not read from source `{$source}`"); } return new self($http_response_header ?? []); } public static function create(array $headers): self { return new self($headers); } public function __construct(array $headers) { $this->robotHeadersProperties = $this->parseHeaders($headers); } public function mayIndex(string $userAgent = '*'): bool { return $this->none($userAgent) ? false : ! $this->noindex($userAgent); } public function mayFollow(string $userAgent = '*'): bool { return $this->none($userAgent) ? false : ! $this->nofollow($userAgent); } public function noindex(string $userAgent = '*'): bool { return $this->robotHeadersProperties[$userAgent]['noindex'] ?? $this->robotHeadersProperties['*']['noindex'] ?? false; } public function nofollow(string $userAgent = '*'): bool { return $this->robotHeadersProperties[$userAgent]['nofollow'] ?? $this->robotHeadersProperties['*']['nofollow'] ?? false; } public function none(string $userAgent = '*'): bool { return $this->robotHeadersProperties[$userAgent]['none'] ?? $this->robotHeadersProperties['*']['none'] ?? false; } protected function parseHeaders(array $headers): array { $robotHeaders = $this->filterRobotHeaders($headers); return array_reduce($robotHeaders, function (array $parsedHeaders, $header) { $header = $this->normalizeHeaders($header); $headerParts = explode(':', $header); $userAgent = count($headerParts) === 3 ? trim($headerParts[1]) : '*'; $options = end($headerParts); $parsedHeaders[$userAgent] = [ 'noindex' => strpos(strtolower($options), 'noindex') !== false, 'nofollow' => strpos(strtolower($options), 'nofollow') !== false, 'none' => strpos(strtolower($options), 'none') !== false, ]; return $parsedHeaders; }, []); } protected function filterRobotHeaders(array $headers): array { return array_filter($headers, function ($header) use ($headers) { $headerContent = $this->normalizeHeaders($headers[$header] ?? []); return strpos(strtolower($header), 'x-robots-tag') === 0 || strpos(strtolower($headerContent), 'x-robots-tag') === 0; }, ARRAY_FILTER_USE_KEY); } protected function normalizeHeaders($headers): string { return implode(',', (array) $headers); } }