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
 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);
     }
 }
예제 #9
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();
 }
예제 #10
0
 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);
     }
 }
예제 #11
0
 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);
     }
 }
예제 #12
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());
     }
 }
예제 #13
0
 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);
     }
 }
예제 #14
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);
     }
 }