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());
 }
Пример #2
0
 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;
         }
     }
 }
Пример #3
0
 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();
 }
Пример #4
0
 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());
 }
Пример #5
0
 function generate()
 {
     parent::generate();
     $xpath = new DOMXPath($this->_doc);
     $serviceNodes = $xpath->query("/xml/services/service");
     foreach ($serviceNodes as $serviceNode) {
         $this->writeService($serviceNode);
     }
 }
Пример #6
0
 /**
  * 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);
 }
Пример #8
0
 /**
  * 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);
     $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);
     }
     $this->writeProjectFile();
 }
Пример #10
0
 protected function addFile($fileName, $fileContents, $addLicense = true)
 {
     $patterns = array('/@package\\s+.+/', '/@subpackage\\s+.+/');
     $replacements = array('@package ' . $this->package, '@subpackage ' . $this->subpackage);
     $fileContents = preg_replace($patterns, $replacements, $fileContents);
     parent::addFile($fileName, $fileContents, $addLicense);
 }
Пример #11
0
 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());
     }
 }
Пример #12
0
 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);
     }
 }