first commit
This commit is contained in:
64
libraries/vendor/symfony/web-link/HttpHeaderSerializer.php
vendored
Normal file
64
libraries/vendor/symfony/web-link/HttpHeaderSerializer.php
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\WebLink;
|
||||
|
||||
use Psr\Link\LinkInterface;
|
||||
|
||||
/**
|
||||
* Serializes a list of Link instances to an HTTP Link header.
|
||||
*
|
||||
* @see https://tools.ietf.org/html/rfc5988
|
||||
*
|
||||
* @author Kévin Dunglas <dunglas@gmail.com>
|
||||
*/
|
||||
final class HttpHeaderSerializer
|
||||
{
|
||||
/**
|
||||
* Builds the value of the "Link" HTTP header.
|
||||
*
|
||||
* @param LinkInterface[]|\Traversable $links
|
||||
*/
|
||||
public function serialize(iterable $links): ?string
|
||||
{
|
||||
$elements = [];
|
||||
foreach ($links as $link) {
|
||||
if ($link->isTemplated()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$attributesParts = ['', sprintf('rel="%s"', implode(' ', $link->getRels()))];
|
||||
foreach ($link->getAttributes() as $key => $value) {
|
||||
if (\is_array($value)) {
|
||||
foreach ($value as $v) {
|
||||
$attributesParts[] = sprintf('%s="%s"', $key, preg_replace('/(?<!\\\\)"/', '\"', $v));
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!\is_bool($value)) {
|
||||
$attributesParts[] = sprintf('%s="%s"', $key, preg_replace('/(?<!\\\\)"/', '\"', $value));
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (true === $value) {
|
||||
$attributesParts[] = $key;
|
||||
}
|
||||
}
|
||||
|
||||
$elements[] = sprintf('<%s>%s', $link->getHref(), implode('; ', $attributesParts));
|
||||
}
|
||||
|
||||
return $elements ? implode(',', $elements) : null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user