Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
HttpContentProvider.php
Go to the documentation of this file.
1 <?php
8 
11 use Psr\Log\LoggerInterface;
13 
18 {
22  private $httpClient;
23 
27  private $logger;
28 
32  private $urlBuilder;
33 
40  public function __construct(
41  ClientInterface $httpClient,
42  UrlBuilder $urlBuilder,
43  LoggerInterface $logger
44  ) {
45  $this->httpClient = $httpClient;
46  $this->urlBuilder = $urlBuilder;
47  $this->logger = $logger;
48  }
49 
53  public function getContent($version, $edition, $locale)
54  {
55  $result = false;
56 
57  try {
58  $result = $this->retrieveContent($version, $edition, $locale);
59  if (!$result) {
60  $result = $this->retrieveContent($version, $edition, Locale::DEFAULT_SYSTEM_LOCALE);
61  if (!$result) {
62  $result = $this->retrieveContent($version, '', 'default');
63  }
64  }
65  } catch (\Exception $e) {
66  $this->logger->warning(
67  sprintf(
68  'Failed to retrieve the release notification content. The response is: %s',
69  empty($result) ? 'Response body is empty.' : $result
70  )
71  );
72  }
73 
74  return $result;
75  }
76 
85  private function retrieveContent($version, $edition, $locale)
86  {
87  $url = $this->urlBuilder->getUrl($version, $edition, $locale);
88  return empty($url) ? false : $this->getResponse($url);
89  }
90 
97  private function getResponse($url)
98  {
99  $this->httpClient->get($url);
100  $responseBody = $this->httpClient->getBody();
101 
102  if ($this->httpClient->getStatus() === 200 && !empty($responseBody)) {
103  return $responseBody;
104  }
105 
106  return false;
107  }
108 }
return false
Definition: gallery.phtml:36
foreach(array_keys($composerData['require']) as $requiredPackage) if(empty($edition)) if(!empty($opts['edition'])) $edition
$logger
__construct(ClientInterface $httpClient, UrlBuilder $urlBuilder, LoggerInterface $logger)