mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
84 lines
2.1 KiB
PHP
84 lines
2.1 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\PageCache\Model\Cache;
|
|
|
|
use Magento\Framework\UrlInterface;
|
|
use Magento\Framework\App\DeploymentConfig;
|
|
use Magento\Framework\Config\ConfigOptionsListConstants;
|
|
use Magento\Framework\App\RequestInterface;
|
|
use Laminas\Uri\Uri;
|
|
use Laminas\Uri\UriFactory;
|
|
|
|
/**
|
|
* Cache server model.
|
|
*/
|
|
class Server
|
|
{
|
|
/**
|
|
* @var UrlInterface
|
|
*/
|
|
protected $urlBuilder;
|
|
|
|
/**
|
|
* @var DeploymentConfig
|
|
*/
|
|
private $config;
|
|
|
|
/**
|
|
* @var RequestInterface
|
|
*/
|
|
private $request;
|
|
|
|
const DEFAULT_PORT = 80;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param UrlInterface $urlBuilder
|
|
* @param DeploymentConfig $config
|
|
* @param RequestInterface $request
|
|
*/
|
|
public function __construct(
|
|
UrlInterface $urlBuilder,
|
|
DeploymentConfig $config,
|
|
RequestInterface $request
|
|
) {
|
|
$this->urlBuilder = $urlBuilder;
|
|
$this->config = $config;
|
|
$this->request = $request;
|
|
}
|
|
|
|
/**
|
|
* Get cache servers' Uris
|
|
*
|
|
* @return Uri[]
|
|
*/
|
|
public function getUris()
|
|
{
|
|
$servers = [];
|
|
$configuredHosts = $this->config->get(ConfigOptionsListConstants::CONFIG_PATH_CACHE_HOSTS);
|
|
|
|
if (is_array($configuredHosts)) {
|
|
foreach ($configuredHosts as $host) {
|
|
$servers[] = UriFactory::factory('')
|
|
->setHost($host['host'])
|
|
->setPort(isset($host['port']) ? $host['port'] : self::DEFAULT_PORT);
|
|
}
|
|
} elseif ($this->request->getHttpHost()) {
|
|
$servers[] = UriFactory::factory('')->setHost($this->request->getHttpHost())->setPort(self::DEFAULT_PORT);
|
|
} else {
|
|
$servers[] = UriFactory::factory($this->urlBuilder->getUrl('*', ['_nosid' => true]));
|
|
}
|
|
|
|
foreach (array_keys($servers) as $key) {
|
|
$servers[$key]->setScheme('http')
|
|
->setPath('/')
|
|
->setQuery(null);
|
|
}
|
|
return $servers;
|
|
}
|
|
}
|