Url.php in Migrate Plus 8.3
Same filename and directory in other branches
File
src/Plugin/migrate/source/Url.phpView source
<?php
namespace Drupal\migrate_plus\Plugin\migrate\source;
use Drupal\migrate\Plugin\MigrationInterface;
use Drupal\migrate_plus\DataParserPluginInterface;
/**
* Source plugin for retrieving data via URLs.
*
* @MigrateSource(
* id = "url"
* )
*/
class Url extends SourcePluginExtension {
/**
* The source URLs to retrieve.
*
* @var array
*/
protected $sourceUrls = [];
/**
* The data parser plugin.
*
* @var \Drupal\migrate_plus\DataParserPluginInterface
*/
protected $dataParserPlugin;
/**
* {@inheritdoc}
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration) {
if (!is_array($configuration['urls'])) {
$configuration['urls'] = [
$configuration['urls'],
];
}
parent::__construct($configuration, $plugin_id, $plugin_definition, $migration);
$this->sourceUrls = $configuration['urls'];
// Set a default Accept header.
/* $this->headers = array_merge(['Accept' => 'application/json'],
$configuration['headers'] ?: []);*/
// See if this is a paged response with next links. If so, add to the source_urls array.
/* foreach ( (array) $configuration['urls'] as $url) {
$this->sourceUrls += $this->getNextLinks($url);
}*/
}
/**
* Return a string representing the source URLs.
*
* @return string
* Comma-separated list of URLs being imported.
*/
public function __toString() {
// This could cause a problem when using a lot of urls, may need to hash.
$urls = implode(', ', $this->sourceUrls);
return $urls;
}
/**
* Returns the initialized data parser plugin.
*
* @return \Drupal\migrate_plus\DataParserPluginInterface
* The data parser plugin.
*/
public function getDataParserPlugin() {
if (!isset($this->dataParserPlugin)) {
$this->dataParserPlugin = \Drupal::service('plugin.manager.migrate_plus.data_parser')
->createInstance($this->configuration['data_parser_plugin'], $this->configuration);
}
return $this->dataParserPlugin;
}
/**
* Creates and returns a filtered Iterator over the documents.
*
* @return \Iterator
* An iterator over the documents providing source rows that match the
* configured item_selector.
*/
protected function initializeIterator() {
return $this
->getDataParserPlugin();
}
}