fetchUrl = $config_factory->get('update.settings')->get('fetch.url'); $this->httpClient = $http_client; $this->updateSettings = $config_factory->get('update.settings'); } /** * {@inheritdoc} */ public function fetchProjectData(array $project, $site_key = '') { $url = $this->buildFetchUrl($project, $site_key); $data = ''; try { $data = (string) $this->httpClient ->get($url, ['headers' => ['Accept' => 'text/xml']]) ->getBody(); } catch (RequestException $exception) { watchdog_exception('update', $exception); } return $data; } /** * {@inheritdoc} */ public function buildFetchUrl(array $project, $site_key = '') { $name = $project['name']; $url = $this->getFetchBaseUrl($project); $url .= '/' . $name . '/' . \Drupal::CORE_COMPATIBILITY; // Only append usage information if we have a site key and the project is // enabled. We do not want to record usage statistics for disabled projects. if (!empty($site_key) && (strpos($project['project_type'], 'disabled') === FALSE)) { // Append the site key. $url .= (strpos($url, '?') !== FALSE) ? '&' : '?'; $url .= 'site_key='; $url .= rawurlencode($site_key); // Append the version. if (!empty($project['info']['version'])) { $url .= '&version='; $url .= rawurlencode($project['info']['version']); } // Append the list of modules or themes enabled. $list = array_keys($project['includes']); $url .= '&list='; $url .= rawurlencode(implode(',', $list)); } return $url; } /** * {@inheritdoc} */ public function getFetchBaseUrl($project) { if (isset($project['info']['project status url'])) { $url = $project['info']['project status url']; } else { $url = $this->fetchUrl; if (empty($url)) { $url = static::UPDATE_DEFAULT_URL; } } return $url; } }