![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/MarketplaceBundle/Service/ |
<?php declare(strict_types=1); namespace Mautic\MarketplaceBundle\Service; use GuzzleHttp\ClientInterface; use Mautic\CacheBundle\Cache\CacheProvider; use Mautic\MarketplaceBundle\DTO\Allowlist as DTOAllowlist; use Mautic\MarketplaceBundle\Exception\ApiException; /** * Provides several helper functions to interact with Mautic's allowlist. */ class Allowlist { private ?DTOAllowlist $allowlist = null; private const MARKETPLACE_ALLOWLIST_CACHE_KEY = 'marketplace_allowlist'; public function __construct( private Config $config, private CacheProvider $cache, private ClientInterface $httpClient ) { } public function getAllowList(): ?DTOAllowlist { if (!empty($this->allowlist)) { return $this->allowlist; } $cache = $this->cache->getSimpleCache(); $cachedAllowlistString = $cache->get(self::MARKETPLACE_ALLOWLIST_CACHE_KEY); if (!empty($cachedAllowlistString)) { return $this->parseAllowlistJson($cachedAllowlistString); } if (!empty($this->config->getAllowListUrl())) { $response = $this->httpClient->request('GET', $this->config->getAllowlistUrl()); $body = (string) $response->getBody(); if ($response->getStatusCode() >= 300) { throw new ApiException($body, $response->getStatusCode()); } // Cache the allowlist for the given amount of seconds (3600 by default). $cache->set( self::MARKETPLACE_ALLOWLIST_CACHE_KEY, $body, $this->config->getAllowlistCacheTtlSeconds() ); return $this->parseAllowlistJson($body); } return null; } public function clearCache(): void { $this->cache->getSimpleCache()->delete(self::MARKETPLACE_ALLOWLIST_CACHE_KEY); } private function parseAllowlistJson(string $payload): DTOAllowlist { return DTOAllowlist::fromArray(json_decode($payload, true)); } }