
| Current Path : /var/www/html1/bbp/web/modules/contrib/migrate_plus/src/Plugin/migrate_plus/data_fetcher/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/html1/bbp/web/modules/contrib/migrate_plus/src/Plugin/migrate_plus/data_fetcher/Http.php |
<?php
namespace Drupal\migrate_plus\Plugin\migrate_plus\data_fetcher;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\migrate\MigrateException;
use Drupal\migrate_plus\DataFetcherPluginBase;
use GuzzleHttp\Exception\RequestException;
/**
* Retrieve data over an HTTP connection for migration.
*
* Example:
*
* @code
* source:
* plugin: url
* data_fetcher_plugin: http
* headers:
* Accept: application/json
* User-Agent: Internet Explorer 6
* Authorization-Key: secret
* Arbitrary-Header: foobarbaz
* @endcode
*
* @DataFetcher(
* id = "http",
* title = @Translation("HTTP")
* )
*/
class Http extends DataFetcherPluginBase implements ContainerFactoryPluginInterface {
/**
* The HTTP client.
*
* @var \GuzzleHttp\Client
*/
protected $httpClient;
/**
* The request headers.
*
* @var array
*/
protected $headers = [];
/**
* The data retrieval client.
*
* @var \Drupal\migrate_plus\AuthenticationPluginInterface
*/
protected $authenticationPlugin;
/**
* {@inheritdoc}
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->httpClient = \Drupal::httpClient();
// Ensure there is a 'headers' key in the configuration.
$configuration += ['headers' => []];
$this->setRequestHeaders($configuration['headers']);
}
/**
* Returns the initialized authentication plugin.
*
* @return \Drupal\migrate_plus\AuthenticationPluginInterface
* The authentication plugin.
*/
public function getAuthenticationPlugin() {
if (!isset($this->authenticationPlugin)) {
$this->authenticationPlugin = \Drupal::service('plugin.manager.migrate_plus.authentication')->createInstance($this->configuration['authentication']['plugin'], $this->configuration['authentication']);
}
return $this->authenticationPlugin;
}
/**
* {@inheritdoc}
*/
public function setRequestHeaders(array $headers) {
$this->headers = $headers;
}
/**
* {@inheritdoc}
*/
public function getRequestHeaders() {
return !empty($this->headers) ? $this->headers : [];
}
/**
* {@inheritdoc}
*/
public function getResponse($url) {
try {
$options = ['headers' => $this->getRequestHeaders()];
if (!empty($this->configuration['authentication'])) {
$options = array_merge($options, $this->getAuthenticationPlugin()->getAuthenticationOptions());
}
$response = $this->httpClient->get($url, $options);
if (empty($response)) {
throw new MigrateException('No response at ' . $url . '.');
}
}
catch (RequestException $e) {
throw new MigrateException('Error message: ' . $e->getMessage() . ' at ' . $url . '.');
}
return $response;
}
/**
* {@inheritdoc}
*/
public function getResponseContent($url) {
$response = $this->getResponse($url);
return $response->getBody();
}
}