Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ComposerRepository.php

function ComposerRepository::getProviders

Overrides ArrayRepository::getProviders

File

vendor/composer/composer/src/Composer/Repository/ComposerRepository.php, line 736

Class

ComposerRepository
@author Jordi Boggiano <j.boggiano@seld.be>

Namespace

Composer\Repository

Code

public function getProviders(string $packageName) {
    $this->loadRootServerFile();
    $result = [];
    if ($this->providersApiUrl) {
        try {
            $apiResult = $this->httpDownloader
                ->get(str_replace('%package%', $packageName, $this->providersApiUrl), $this->options)
                ->decodeJson();
        } catch (TransportException $e) {
            if ($e->getStatusCode() === 404) {
                return $result;
            }
            throw $e;
        }
        foreach ($apiResult['providers'] as $provider) {
            $result[$provider['name']] = $provider;
        }
        return $result;
    }
    if ($this->hasPartialPackages()) {
        if (!is_array($this->partialPackagesByName)) {
            throw new \LogicException('hasPartialPackages failed to initialize $this->partialPackagesByName');
        }
        foreach ($this->partialPackagesByName as $versions) {
            foreach ($versions as $candidate) {
                if (isset($result[$candidate['name']]) || !isset($candidate['provide'][$packageName])) {
                    continue;
                }
                $result[$candidate['name']] = [
                    'name' => $candidate['name'],
                    'description' => $candidate['description'] ?? '',
                    'type' => $candidate['type'] ?? '',
                ];
            }
        }
    }
    if ($this->packages) {
        $result = array_merge($result, parent::getProviders($packageName));
    }
    return $result;
}
RSS feed
Powered by Drupal