56 lines
1.8 KiB
PHP
Executable File
56 lines
1.8 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Test\Integrity\Dependency;
|
|
|
|
/**
|
|
* Converter of webapi.xml content into array format.
|
|
*/
|
|
class Converter implements \Magento\Framework\Config\ConverterInterface
|
|
{
|
|
/**#@+
|
|
* Array keys for config internal representation.
|
|
*/
|
|
private const KEY_URL = 'url';
|
|
private const KEY_CLASS = 'class';
|
|
private const KEY_METHOD = 'method';
|
|
private const KEY_ROUTE = 'route';
|
|
private const KEY_ROUTES = 'routes';
|
|
private const KEY_SERVICE = 'service';
|
|
/**#@-*/
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function convert($source)
|
|
{
|
|
$result = [];
|
|
/** @var \DOMNodeList $routes */
|
|
$routes = $source->getElementsByTagName(self::KEY_ROUTE);
|
|
/** @var \DOMElement $route */
|
|
foreach ($routes as $route) {
|
|
if ($route->nodeType != XML_ELEMENT_NODE) {
|
|
continue;
|
|
}
|
|
/** @var \DOMElement $service */
|
|
$service = $route->getElementsByTagName(self::KEY_SERVICE)->item(0);
|
|
$serviceClass = $service->attributes->getNamedItem(self::KEY_CLASS)->nodeValue;
|
|
$serviceMethod = $service->attributes->getNamedItem(self::KEY_METHOD)->nodeValue;
|
|
$url = trim($route->attributes->getNamedItem(self::KEY_URL)->nodeValue);
|
|
|
|
$method = $route->attributes->getNamedItem(self::KEY_METHOD)->nodeValue;
|
|
|
|
// We could handle merging here by checking if the route already exists
|
|
$result[self::KEY_ROUTES][$url][$method] = [
|
|
self::KEY_SERVICE => [
|
|
self::KEY_CLASS => $serviceClass,
|
|
self::KEY_SERVICE => $serviceMethod,
|
|
],
|
|
];
|
|
}
|
|
return $result;
|
|
}
|
|
}
|