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