UrlBuilder.php 1.8 KB
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\ReleaseNotification\Model\ContentProvider\Http;

use Magento\Framework\App\Config\ScopeConfigInterface;

/**
 * Builder to build Url to retrieve the notification content.
 */
class UrlBuilder
{
    /**
     * Path to the configuration value which contains an URL that provides the release notification data.
     *
     * @var string
     */
    private static $notificationContentUrlConfigPath = 'system/release_notification/content_url';

    /**
     * Path to the configuration value indicates if use https in notification content request.
     *
     * @var string
     */
    private static $useHttpsFlagConfigPath = 'system/release_notification/use_https';

    /**
     * @var ScopeConfigInterface
     */
    private $config;

    /**
     * @param ScopeConfigInterface $config
     */
    public function __construct(ScopeConfigInterface $config)
    {
        $this->config = $config;
    }

    /**
     * Builds the URL to request the release notification content data based on passed parameters.
     *
     * @param string $version
     * @param string $edition
     * @param string $locale
     * @return string
     */
    public function getUrl($version, $edition, $locale)
    {
        $scheme = $this->config->isSetFlag(self::$useHttpsFlagConfigPath) ? 'https://' : 'http://';
        $baseUrl = $this->config->getValue(self::$notificationContentUrlConfigPath);
        if (empty($baseUrl)) {
            return '';
        } else {
            $url = $scheme . $baseUrl;
            $url .= empty($version) ? '' : '/' . $version;
            $url .= empty($edition) ? '' : '/' . $edition;
            $url .= empty($locale) ? '' : '/' . $locale;
            return $url . '.json';
        }
    }
}