function generate() { parent::generate(); $xpath = new DOMXPath($this->_doc); $this->appendLine('<?php'); $this->appendLine('require_once("KalturaClientBase.php");'); $this->appendLine(''); // enumes $enumNodes = $xpath->query("/xml/enums/enum"); foreach ($enumNodes as $enumNode) { $this->writeEnum($enumNode); } // classes $classNodes = $xpath->query("/xml/classes/class"); foreach ($classNodes as $classNode) { $this->writeClass($classNode); } $serviceNodes = $xpath->query("/xml/services/service"); foreach ($serviceNodes as $serviceNode) { $this->writeService($serviceNode); } $this->appendLine(); $this->writeMainClient($serviceNodes); $this->appendLine(); $this->addFile("KalturaClient.php", $this->getTextBlock()); }
public function generate() { parent::generate(); $this->base_client_dir = $this->getParam("type"); $this->xml = new SimpleXMLElement($this->_xmlFile, NULL, TRUE); foreach ($this->xml->children() as $second_gen) { switch ($second_gen->getName()) { case "enums": foreach ($second_gen->children() as $enums_node) { $this->createTypeClass($enums_node); } break; case "classes": foreach ($second_gen->children() as $classes_node) { $this->createVoClass($classes_node); } break; case "services": foreach ($second_gen->children() as $services_node) { $this->createCommands($services_node); $this->createServices($services_node); } break; } } }
function generate() { parent::generate(); $this->removeFilesFromSource(); $xpath = new DOMXPath($this->_doc); $this->loadClassInheritance($xpath->query("/xml/classes/class")); $this->loadEnums($xpath->query("/xml/enums/enum")); // enumes $ types $enumNodes = $xpath->query("/xml/enums/enum"); foreach ($enumNodes as $enumNode) { $this->writeEnum($enumNode); } $classNodes = $xpath->query("/xml/classes/class"); foreach ($classNodes as $classNode) { $this->writeClass($classNode); } $this->writeObjectFactoryClass($classNodes); $serviceNodes = $xpath->query("/xml/services/service"); $this->startNewTextBlock(); foreach ($serviceNodes as $serviceNode) { $this->writeService($serviceNode); } $this->writeMainClient($serviceNodes); $this->writeCsproj(); }
function generate() { parent::generate(); $xpath = new DOMXPath($this->_doc); $this->appendLine("require 'kaltura_client_base.rb'"); $this->appendLine(); $this->appendLine("module Kaltura"); $this->appendLine(); // enumes $enumNodes = $xpath->query("/xml/enums/enum"); foreach ($enumNodes as $enumNode) { $this->writeEnum($enumNode); } // classes $classNodes = $xpath->query("/xml/classes/class"); foreach ($classNodes as $classNode) { $this->writeClass($classNode); } $serviceNodes = $xpath->query("/xml/services/service"); foreach ($serviceNodes as $serviceNode) { $this->writeService($serviceNode); } $this->appendLine(); $this->writeMainClient($serviceNodes); $this->appendLine(); $this->appendLine("end"); $this->addFile("kaltura_client.rb", $this->getTextBlock()); }
function generate() { parent::generate(); $xpath = new DOMXPath($this->_doc); $serviceNodes = $xpath->query("/xml/services/service"); foreach ($serviceNodes as $serviceNode) { $this->writeService($serviceNode); } }
/** * Parses the higher-level of the schema, divide parsing to five steps: * Enum creation, Object (VO) classes, Services and actions, Main, and project file. */ public function generate() { parent::generate(); $this->schemaXml = new SimpleXMLElement(file_get_contents($this->_xmlFile)); $services = null; $configurations = null; //parse object types foreach ($this->schemaXml->children() as $reflectionType) { switch ($reflectionType->getName()) { case 'enums': //create enum classes foreach ($reflectionType->children() as $enums_node) { $this->writeEnum($enums_node); } break; case 'classes': $this->echoLine($this->voClasses, "var util = require('util');"); $this->echoLine($this->voClasses, "var kaltura = require('./KalturaClientBase');"); $this->echoLine($this->voClasses, ""); //create object classes foreach ($reflectionType->children() as $classes_node) { $this->writeObjectClass($classes_node); } break; case 'services': $this->echoLine($this->serviceClasses, "var util = require('util');"); $this->echoLine($this->serviceClasses, "var kaltura = require('./KalturaClientBase');"); $this->echoLine($this->serviceClasses, ""); //implement services (api actions) foreach ($reflectionType->children() as $services_node) { $this->writeService($services_node); } $services = $reflectionType->children(); break; case 'configurations': $configurations = $reflectionType->children(); break; } } //write main class (if needed, this can also be included in the static sources folder if not dynamic) $this->writeMainClass($services, $configurations); $this->addFile('KalturaTypes.js', $this->enumTypes); $this->addFile('KalturaVO.js', $this->voClasses); $this->addFile('KalturaServices.js', $this->serviceClasses); $this->addFile('KalturaClient.js', $this->mainClass); //write project file (if needed, this can also be included in the static sources folder if not dynamic) $this->writeProjectFile(); }
public function generate() { parent::generate(); $xpath = new DOMXPath($this->_doc); $enumNodes = $xpath->query("/xml/enums/enum"); foreach ($enumNodes as $enumNode) { $this->writeEnum($enumNode); } $classNodes = $xpath->query("/xml/classes/class"); foreach ($classNodes as $classNode) { $this->writeClass($classNode); } $serviceNodes = $xpath->query("/xml/services/service"); foreach ($serviceNodes as $serviceNode) { $this->writeService($serviceNode); } $this->writeMainClient($serviceNodes); }
function generate() { parent::generate(); $xpath = new DOMXPath($this->_doc); $enumNodes = $xpath->query("/xml/enums/enum"); $classNodes = $xpath->query("/xml/classes/class"); $serviceNodes = $xpath->query("/xml/services/service"); $this->writePlugin('', $enumNodes, $classNodes, $serviceNodes, $serviceNodes); // plugins $pluginNodes = $xpath->query("/xml/plugins/plugin"); foreach ($pluginNodes as $pluginNode) { $pluginName = $pluginNode->getAttribute("name"); $enumNodes = $xpath->query("/xml/enums/enum[@plugin = '{$pluginName}']"); $classNodes = $xpath->query("/xml/classes/class[@plugin = '{$pluginName}']"); $serviceNodes = $xpath->query("/xml/services/service[@plugin = '{$pluginName}']"); $serviceNamesNodes = $xpath->query("/xml/plugins/plugin[@name = '{$pluginName}']/pluginService"); $this->writePlugin($pluginName, $enumNodes, $classNodes, $serviceNodes, $serviceNamesNodes); } }
/** * Parses the higher-level of the schema, divide parsing to five steps: * Enum creation, Object (VO) classes, Services and actions, Main, and project file. */ public function generate() { parent::generate(); $this->schemaXml = new SimpleXMLElement(file_get_contents($this->_xmlFile)); //parse object types foreach ($this->schemaXml->children() as $reflectionType) { switch ($reflectionType->getName()) { case "enums": //create enum classes foreach ($reflectionType->children() as $enums_node) { $this->writeEnum($enums_node); } break; case "classes": //create object classes foreach ($reflectionType->children() as $classes_node) { $this->writeObjectClass($classes_node); } break; case "services": //implement services (api actions) foreach ($reflectionType->children() as $services_node) { $this->writeService($services_node); } //write main class (if needed, this can also be included in the static sources folder if not dynamic) $this->writeMainClass($reflectionType->children()); break; } } $this->addFile('KalturaTypes.js', $this->enumTypes); $this->addFile('KalturaVO.js', $this->voClasses); $this->addFile('KalturaServices.js', $this->serviceClasses); $this->addFile('KalturaClient.js', $this->mainClass); //write project file (if needed, this can also be included in the static sources folder if not dynamic) $this->writeProjectFile(); }
function generate() { parent::generate(); $xpath = new DOMXPath($this->_doc); $this->writeTypes(); $this->startNewTextBlock(); $this->appendLine('-include_lib("kaltura_client_types.hrl").'); $this->appendLine(); $this->appendLine('-type void() :: void.'); $this->appendLine(); $this->appendLine('-record(kaltura_error, {'); $this->appendLine(' code = null :: string(),'); $this->appendLine(' message = null :: string(),'); $this->appendLine(' args = [] :: list()'); $this->appendLine('}).'); $this->appendLine(); $this->appendLine('-record(kaltura_configuration, {'); $this->appendLine(' url = "http://www.kaltura.com/api_v3" :: string(),'); $this->appendLine(' client_options = [{verbose, false}] :: httpc:options(),'); $this->appendLine(' request_options = [{timeout, 90000}] :: httpc:http_options()'); $this->appendLine('}).'); $this->appendLine(); $this->appendLine('-record(kaltura_request, {'); $configurationNodes = $xpath->query("/xml/configurations/*"); $this->writeRequestProperties($configurationNodes); $this->appendLine('}).'); $this->appendLine(); $this->appendLine('kaltura_request_to_proplist(#kaltura_request{} = Rec) ->'); $this->appendLine(' lists:zip(record_info(fields, kaltura_request), tl(tuple_to_list(Rec))).'); $this->appendLine(); $this->addFile("src/kaltura_client.hrl", $this->getTextBlock()); $serviceNodes = $xpath->query("/xml/services/service"); foreach ($serviceNodes as $serviceNode) { $this->writeService($serviceNode); } }
function generate() { parent::generate(); $xpath = new DOMXPath($this->_doc); // enumes $this->appendLine('<?php'); if ($this->generateDocs) { $this->appendLine('/**'); $this->appendLine(" * @package {$this->package}"); $this->appendLine(" * @subpackage {$this->subpackage}"); $this->appendLine(' */'); } $this->appendLine('require_once(dirname(__FILE__) . "/KalturaClientBase.php");'); $this->appendLine(''); $enumNodes = $xpath->query("/xml/enums/enum"); foreach ($enumNodes as $enumNode) { if (!$enumNode->hasAttribute('plugin')) { $this->writeEnum($enumNode); } } $this->addFile("KalturaEnums.php", $this->getTextBlock()); // classes $this->startNewTextBlock(); $this->appendLine('<?php'); if ($this->generateDocs) { $this->appendLine('/**'); $this->appendLine(" * @package {$this->package}"); $this->appendLine(" * @subpackage {$this->subpackage}"); $this->appendLine(' */'); } $this->appendLine('require_once(dirname(__FILE__) . "/KalturaClientBase.php");'); $this->appendLine(''); $classNodes = $xpath->query("/xml/classes/class"); foreach ($classNodes as $classNode) { if (!$classNode->hasAttribute('plugin')) { $this->writeClass($classNode); } } $this->addFile("KalturaTypes.php", $this->getTextBlock()); // services $this->startNewTextBlock(); $this->appendLine('<?php'); if ($this->generateDocs) { $this->appendLine('/**'); $this->appendLine(" * @package {$this->package}"); $this->appendLine(" * @subpackage {$this->subpackage}"); $this->appendLine(' */'); } $this->appendLine('require_once(dirname(__FILE__) . "/KalturaClientBase.php");'); $this->appendLine('require_once(dirname(__FILE__) . "/KalturaEnums.php");'); $this->appendLine('require_once(dirname(__FILE__) . "/KalturaTypes.php");'); $this->appendLine(''); $serviceNodes = $xpath->query("/xml/services/service"); foreach ($serviceNodes as $serviceNode) { if (!$serviceNode->hasAttribute('plugin')) { $this->writeService($serviceNode); } } $this->appendLine(); $configurationNodes = $xpath->query("/xml/configurations/*"); $this->writeMainClient($serviceNodes, $configurationNodes); $this->appendLine(); $this->addFile("KalturaClient.php", $this->getTextBlock()); // plugins $plugins = KalturaPluginManager::getPluginInstances(); foreach ($plugins as $plugin) { $this->writePlugin($plugin); } }
function generate() { parent::generate(); $xpath = new DOMXPath($this->_doc); $this->appendLine("require 'kaltura_client_base.rb'"); $this->appendLine(); $this->appendLine("module Kaltura"); $this->appendLine(); // enumes $enumNodes = $xpath->query("/xml/enums/enum[not(@plugin)]"); foreach ($enumNodes as $enumNode) { $this->writeEnum($enumNode); } // classes $classNodes = $xpath->query("/xml/classes/class[not(@plugin)]"); foreach ($classNodes as $classNode) { $this->writeClass($classNode); } $serviceNodes = $xpath->query("/xml/services/service[not(@plugin)]"); foreach ($serviceNodes as $serviceNode) { $this->writeService($serviceNode); } $this->appendLine(); $serviceNodes = $xpath->query("/xml/services/service[not(@plugin)]"); $this->writeMainClient($serviceNodes); $this->appendLine(); $this->appendLine("end"); $this->addFile("lib/kaltura_client.rb", $this->getTextBlock()); // writing plugins $pluginNodes = $xpath->query("/xml/plugins/plugin"); foreach ($pluginNodes as $pluginNode) { $pluginName = $pluginNode->getAttribute("name"); $this->startNewTextBlock(); $this->appendLine("require 'kaltura_client.rb'"); $dependencies = $pluginNode->getElementsByTagName("dependency"); foreach ($dependencies as $dependency) { $this->appendLine("require File.dirname(__FILE__) + '/" . $this->camelCaseToUnderscoreAndLower("Kaltura" . $this->upperCaseFirstLetter($dependency->getAttribute("pluginName")) . "ClientPlugin.rb") . "'"); } $this->appendLine(); $this->appendLine("module Kaltura"); $this->appendLine(); $enumNodes = $xpath->query("/xml/enums/enum[@plugin='{$pluginName}']"); foreach ($enumNodes as $enumNode) { $this->writeEnum($enumNode); } $classNodes = $xpath->query("/xml/classes/class[@plugin='{$pluginName}']"); foreach ($classNodes as $classNode) { $this->writeClass($classNode); } $serviceNodes = $xpath->query("/xml/services/service[@plugin='{$pluginName}']"); foreach ($serviceNodes as $serviceNode) { $this->writeService($serviceNode); } if ($serviceNodes->length > 0) { $this->appendLine(); $this->writeMainClient($serviceNodes); } $this->appendLine(); $this->appendLine("end"); $this->addFile($this->camelCaseToUnderscoreAndLower("lib/kaltura_plugins/Kaltura" . $this->upperCaseFirstLetter($pluginName) . "ClientPlugin.rb"), $this->getTextBlock()); } }
function generate() { parent::generate(); $xpath = new DOMXPath($this->_doc); $enumNodes = $xpath->query("/xml/enums/enum"); foreach ($enumNodes as $enumNode) { $this->cacheEnum($enumNode); } $classNodes = $xpath->query("/xml/classes/class"); foreach ($classNodes as $classNode) { $this->cacheType($classNode); } $this->startNewTextBlock(); $this->appendLine('<?php'); $this->appendLine('/**'); $this->appendLine(' * @namespace'); $this->appendLine(' */'); $this->appendLine('namespace Kaltura\\Client;'); $this->appendLine(); if ($this->generateDocs) { $this->appendLine('/**'); $this->appendLine(" * @package {$this->package}"); $this->appendLine(" * @subpackage {$this->subpackage}"); $this->appendLine(' */'); } $this->appendLine('class TypeMap'); $this->appendLine('{'); $classNodes = $xpath->query("/xml/classes/class"); $this->appendLine(' private static $map = array('); foreach ($classNodes as $classNode) { $kalturaType = $classNode->getAttribute('name'); $zendType = $this->getTypeClassInfo($kalturaType); $this->appendLine("\t\t'{$kalturaType}' => '{$zendType->getFullyQualifiedNameNoPrefixSlash()}',"); } $this->appendLine(' );'); $this->appendLine(' '); $this->appendLine(' public static function getZendType($kalturaType)'); $this->appendLine(' {'); $this->appendLine(' if(isset(self::$map[$kalturaType]))'); $this->appendLine(' return self::$map[$kalturaType];'); $this->appendLine(' return null;'); $this->appendLine(' }'); $this->appendLine('}'); $this->addFile($this->getMapPath(), $this->getTextBlock()); // enumes $enumNodes = $xpath->query("/xml/enums/enum"); foreach ($enumNodes as $enumNode) { $this->startNewTextBlock(); $this->appendLine('<?php'); $this->writeEnum($enumNode); $this->addFile($this->getEnumPath($enumNode), $this->getTextBlock()); } // classes $classNodes = $xpath->query("/xml/classes/class"); foreach ($classNodes as $classNode) { $this->startNewTextBlock(); $this->appendLine('<?php'); $this->writeClass($classNode); $this->addFile($this->getTypePath($classNode), $this->getTextBlock()); } // services $serviceNodes = $xpath->query("/xml/services/service"); foreach ($serviceNodes as $serviceNode) { $this->startNewTextBlock(); $this->appendLine('<?php'); $this->writeService($serviceNode); $this->addFile($this->getServicePath($serviceNode), $this->getTextBlock()); } $this->startNewTextBlock(); $this->appendLine('<?php'); $configurationNodes = $xpath->query("/xml/configurations/*"); $this->writeMainClient($serviceNodes, $configurationNodes); $this->addFile($this->getMainPath(), $this->getTextBlock()); // plugins $pluginNodes = $xpath->query("/xml/plugins/plugin"); foreach ($pluginNodes as $pluginNode) { $this->writePlugin($pluginNode); } }
function generate() { parent::generate(); // services / actions / parameters $serviceIds = $this->getServiceIds(); $this->addFile('services/services.map', serialize($serviceIds), false); foreach ($serviceIds as $serviceId) { $actionNames = $this->getActionNames($serviceId); $this->addFile("services/{$serviceId}.service", serialize($actionNames), false); foreach ($actionNames as $actionName) { $parameters = $this->getActionParameters($serviceId, $actionName); $this->addFile("actions/{$serviceId}/{$actionName}.action", serialize($parameters), false); } } // enums $xpath = new DOMXPath($this->_doc); $enumNodes = $xpath->query("/xml/enums/enum"); foreach ($enumNodes as $enumNode) { $enumName = $enumNode->getAttribute('name'); $values = $this->getEnumValueList($enumName); $this->addFile("enums/{$enumName}.enum", serialize($values), false); } // objects $xpath = new DOMXPath($this->_doc); $objectNodes = $xpath->query("/xml/classes/class"); foreach ($objectNodes as $objectNode) { $objectName = $objectNode->getAttribute('name'); $properties = $this->getObjectPropertiesList($objectName); $derivedTypes = $this->getDerivedTypesList($objectName); $objectDetails = array('properties' => $properties, 'derivedTypes' => $derivedTypes); $this->addFile("objects/{$objectName}.object", serialize($objectDetails), false); } }