From 8eff48c31775581624a16cc18d314bc457c1ca8d Mon Sep 17 00:00:00 2001 From: Jorge Castro Date: Mon, 26 Oct 2020 18:19:48 -0300 Subject: [PATCH] 3.0 see README.md --- README.md | 290 +-- composer.json | 10 +- docs/helloservice.jpg | Bin 0 -> 44258 bytes docs/helloservice2.jpg | Bin 0 -> 27861 bytes docs/helloservice3.jpg | Bin 0 -> 37954 bytes docs/helloservice4.jpg | Bin 0 -> 50339 bytes docs/hellosoap.jpg | Bin 0 -> 86568 bytes docs/hellosoap2.jpg | Bin 0 -> 94181 bytes docs/hellosoap3.jpg | Bin 0 -> 75406 bytes examples/1.create/CreateWebService.php | 7 - examples/1.create/Definition.php | 84 - examples/2.service/Example2WSService.php | 85 - examples/3.join/WebService.php | 10 - examples/3.join/data.txt | 1 - examples/4.client/Example2WSClient.php | 102 - examples/Definition.php | 124 ++ examples/Server.php | 12 + .../clientexample2.php => clienteexample.php} | 7 +- examples/service/Example2WSClient.php | 194 ++ examples/service/Example2WSService.php | 159 ++ examples/service/IExample2WSService.php | 97 + .../startup_example/ExampleDefinition.php | 44 + examples/startup_example/run_initial.php | 7 + examples/startup_example/run_with_service.php | 12 + .../service/ExampleHelloService.php | 17 + .../service/IExampleHelloService.php | 17 + lib/CloudKing.php | 1820 ++++++++++------- lib/CloudKingClient.php | 108 +- phpunit.xml | 21 + test/AbstractCloudKingTestCase.php | 20 + test/CloudKingTest.php | 46 + test/bootstrap.php | 27 + 32 files changed, 2087 insertions(+), 1234 deletions(-) create mode 100644 docs/helloservice.jpg create mode 100644 docs/helloservice2.jpg create mode 100644 docs/helloservice3.jpg create mode 100644 docs/helloservice4.jpg create mode 100644 docs/hellosoap.jpg create mode 100644 docs/hellosoap2.jpg create mode 100644 docs/hellosoap3.jpg delete mode 100644 examples/1.create/CreateWebService.php delete mode 100644 examples/1.create/Definition.php delete mode 100644 examples/2.service/Example2WSService.php delete mode 100644 examples/3.join/WebService.php delete mode 100644 examples/3.join/data.txt delete mode 100644 examples/4.client/Example2WSClient.php create mode 100644 examples/Definition.php create mode 100644 examples/Server.php rename examples/{4.client/clientexample2.php => clienteexample.php} (65%) create mode 100644 examples/service/Example2WSClient.php create mode 100644 examples/service/Example2WSService.php create mode 100644 examples/service/IExample2WSService.php create mode 100644 examples/startup_example/ExampleDefinition.php create mode 100644 examples/startup_example/run_initial.php create mode 100644 examples/startup_example/run_with_service.php create mode 100644 examples/startup_example/service/ExampleHelloService.php create mode 100644 examples/startup_example/service/IExampleHelloService.php create mode 100644 phpunit.xml create mode 100644 test/AbstractCloudKingTestCase.php create mode 100644 test/CloudKingTest.php create mode 100644 test/bootstrap.php diff --git a/README.md b/README.md index 00be87e..f462d79 100644 --- a/README.md +++ b/README.md @@ -28,210 +28,236 @@ And why to use this library? ## Getting started -### 1. Creating an instance +### 1.Creating a Definition + +What is a definition class. It is a class that defined the name,namespace, functions and complex-types defined by the web service. + +In this example, we are defining a simple function : function hello($param); ```php -use eftec\cloudking\CloudKing; -include "../vendor/autoload.php"; - -$FILE = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"]; -$NAMESPACE="examplenamespace"; -$NAME_WS='Example2WS'; -$ns=new CloudKing($FILE, $NAMESPACE, $NAME_WS); - -$ns->soap12=false; -$ns->verbose=2; -$ns->allowed_format["POST"]=true; -$ns->variable_type="array"; -// $service=new Example2WSService(); // we will work with this one later -// $ns->serviceInstance=$service; // we will work with this one later -$ns->description="Example Server"; +class ExampleDefinition { + public static $service; + + /** + * You must create this file manually. + * + * @param bool $gui if true then it shows the web gui + */ + public static function init($gui = true) { + $FILE = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME']; + $NAMESPACE + = 'http://www.examplenamespace.cl/'; // the namespace of the web service. It could be anything and not specifically an existing url + $NAME_WS = 'Example2WS'; // the name of the service + + self::$service = new CloudKing($FILE, $NAMESPACE, $NAME_WS); + self::$service->allowed_input['gui'] = $gui; // set to false to disable the web gui. + self::$service->serviceInstance = null; + self::$service->verbose = 2; // for debug purpose + self::$service->description = 'Example server SoapKing'; + + self::$service->addfunction('hello', + [ + self::$service->param('param', 'string', true, false), + ], + [ + self::$service->param('return', 'string') + ], + 'Example of function' + ); + } + + public static function run() { + $r = self::$service->run(); + echo $r; + } +} ``` -You should create an instance indicating the url, namespace, and the name of the webservice. +We will explain more about it later. -You could also indicates other factors and it depends on every case. In case of doubt, you could use the cases indicates in this example. +### 2. Running the first time. -This variable is important +Let's call the definition as follow ```php -$ns->soap12=false; +addfunction("ping" - , [CloudKing::argPrim('ping_param', 's:string')] - , [CloudKing::argPrim('return', 's:string')] - , "Descripcion :Prueba de conexion"); -``` +Open the SOAPUI (or the program that you want to use), and paste the url of the wsdl (obtained in the previous step) and runs it. -In this example, the input is an argument called **ping_param** (string) and the result (called return) is a string. +![docs/hellosoap.jpg](docs/hellosoap.jpg) -* s:**name** = means a primitive value -* tns:**Complex** = indicates a complex structure. +And it will show all the methods defined. In our case, there is a single function called "hello". Then, you can run it. -Example: getting a complex object +![docs/hellosoap2.jpg](docs/hellosoap2.jpg) -```php -$ns->addfunction("GetProducto" - , [CloudKing::argPrim('idProducto', 's:integer')] - , [CloudKing::argComplex('return', 'tns:Producto')] - , "Descripcion :obtiene los datos de una objeto"); -``` +If you run it, it will fail. Why? It is because we are yet to define the service class. -In this case, it uses an complex called tns:**Producto** in the argument return. The name "return" could not be required. +### 4. Service class -You must also specific the complex structure as follow: +In our website, there is a link called SOURCE GENERATION. Click on it and it will show the next screen. + +You can generate a c# code, and both php code (from server and client). We need to generate the server source. If you click on the View PHP Server Source, you can look at the code. However, you can also generate it directly. However, for that, you will need to set the folder + +![docs/helloservice2.jpg](docs/helloservice2.jpg) -```php -$ns->addtype("Producto", [ // because we use "tns:Producto" - CloudKing::argPrim('idProduct', 's:integer'), - CloudKing::argPrim('nombre', 's:string'), - CloudKing::argPrim('precio', 's:integer') -]); -``` -You could also create more complex types as follow + +Let's modify the file of the step 2 ```php -$ns->addtype("Cart", [ - CloudKing::argList('products', 'tns:Producto', 0, 'unbounded'), // a list of products - CloudKing::argPrim('total', 's:integer'), // a primitive - CloudKing::argComplex('category', 'tns:category') // a complex not created for this example -]); +folderServer=__DIR__; // or you could select any folder. +ExampleDefinition::run(); + ``` -Example of function (input value is a complex): +And if we refresh the website, it will show + +![docs/helloservice3.jpg](docs/helloservice3.jpg) + +So, you could generate 1 class and 1 interface automatically. Click on it, and it will generate both files + +![docs/helloservice4.jpg](docs/helloservice4.jpg) + +It will generate the folder service and 2 files + +📁 service + +___ 📃 ExampleHelloService.php (our service class) + +___ 📃 IExampleHelloService.php (the interface class) + +### 5. Editing the Service Class. + +This class is half-generated. We could edit our operations inside this class, so let's change our code. ```php -$ns->addfunction("InsertProducto" - , array(CloudKing::argComplex('Producto', 'tns:Producto')) - ,array(CloudKing::argPrim('return', 's:boolean')) - , "Descripcion :obtiene los datos de una objeto" -); +class ExampleHelloService implements IExampleHelloService { + + /** + * @inheritDoc + */ + public function hello(&$param) { + return $param." world!"; // <--- edit this. + } +} // end class ``` +### 6. Editing our service - -Example: returning a list of objects +Let's modify our service defined in the step 2 again and now, we must indicate our service class (created in the step 4) ```php -$ns->addfunction("GetProductos" - , [] - , [CloudKing::argList('return', 'tns:Producto', 0, 'unbounded')] - , "Descripcion :Obtiene una lista de productos"); +ExampleDefinition::init(); +ExampleDefinition::$service->folderServer=__DIR__; // or you could select any folder.run_initial.php +ExampleDefinition::$service->serviceInstance=new ExampleHelloService(); +ExampleDefinition::run(); ``` -In this case, the function doesn't requires an input value and it returns a list of objects. +And let's run it again using SOAPUI -### 3. Running +![docs/hellosoap3.jpg](docs/hellosoap3.jpg) -Finally, with the instance and the schema, you could run the interface +And now, we have the service up and running. -``` -$ns->run(); -``` +You could later disable the GUI -And open the website to show the interface. +# Definition -In the interface, you could see the WSDL, the methods and the generation of the code. +## Parameters -### 4. Generating the service class +Parameters are used to indicate the arguments of a function, the return value of a function or the fields of a complex structure. -![](docs/generation.jpg) +#### Defining a single parameter. -You could generate the client or server (our service class). Let's generate the PHP Server Source. +> param(name of the parameter, type , reference, required , description) -This generated class lacks of the implementation but everything else is ready. +* name of the parameter : it is the name of the parameter, for example "idCompany", "money" and such +* type: the type of the parameter. It could be a **primitive** value (string,integer,etc.) or it could be defined by a structure/class (called **complex**). If we want to use a **complex** type, we need to define it after we want to use it. +* reference: (optional)If true then the value is also returned. If false, then the value is not returned. +* required: (optional)If true then the value is required. +* description: (optional) An optional description of the parameter. ```php -class Example2WSService { - function ping($ping_param) { - try { - // todo: missing implementation - /* - $_ping_param=''; - */ - // End Input Values - $_pingResult=''; - return $_pingResult; - } catch (Exception $_exception) { - return(array("soap:Fault"=>'Caught exception: '. $_exception->getMessage())); - } - } - // .... -} +self::$service->param('counter', 'integer') // a parameter called "counter" of the type integer +self::$service->param('name', 'string', true, false, "description") // a string parameter called "name" +self::$service->param('prod', 'Product', true, false, "description") // a parameter called "prod" of the complex type Product (it must be defined) ``` -We should create a new PHP file, in our example **Example2WSService.php** +#### Defining an array of parameters -In the step 1, we create the instance of the CloudKing, with the service class up and running, we are ready to finish the implementation of the server. +It is also possible to define an array (list) of parameters. -Uncomment the next line of code (from the step 1) +> paramList(name of the parameter, type , reference, required , description ) ```php -include "Example2WSService.php"; -$service=new Example2WSService(); -$ns->serviceInstance=$service; +self::$service->paramList('names', 'string') // defining an array of string called "names" +self::$service->paramList('productList', 'Product',false,false,'List of products') // defining an array of complex type Product called "productList" ``` -And now, our web service is up and running and we could test into SOAPUI (or any other tools compatible with SOAP) +> Note: This function defines automatically a complex type called ArrayOf\ . If the complex type exists (complex with the same name), then it uses it instead of create a new one. -![](docs/soap1.jpg) +## Complex Types -> Remember that in the main website, you could obtain the description WSDL. It is required for some programs (see image). You could also obtain by calling the webserver with the argument ?wsdl Example: myws.php?wsdl +It is also possible to define a complex type. A complex type is used when we need to define a model or structure. -### 5. Creating the client +> addType( name of the type , [ parameters ] , description) -We could create the client in the same way (with the UI) and we could change the webport and the default namespace. +* name of the type: it is the name of the time. The case of the name matters. +* parameters: We could define one of more parameters for the type. We could even define list of parameters or even parameters that use complex types. +* description: (optional) The description of the type ```php -tempuri=$this->tempuri; - $_obj->soap='1.1' - $_param=''; - $_param.=$_obj->array2xml($ping_param,'ts:ping_param',false,false); - $resultado=$_obj->loadurl($this->url,$_param,'ping'); - return @$resultado['pingResult']; - } - // ... -} +self::$service->addtype('Product', + [ + self::$service->param('idProduct', 'int',false,true, 'comentary'), + self::$service->param('name', 'string'), + self::$service->param('price', 'int') + ]); ``` -And you could call this class like any other service class +Example: Defining a complex type of an invoice with the invoice detail. ```php -$x=new Example2WSClient(); -var_dump($x->ping(20)); +self::$service->addtype('InvoiceDetail', [ + self::$service->param('idInvoiceDetail', 'int'), + self::$service->param('idInvoice', 'int'), + self::$service->param('detail', 'string') +]); +self::$service->addtype('Invoice', [ + self::$service->param('idInvoice', 'int'), + self::$service->paramList('details','InvoiceDetail'), +]); ``` -## TODO - -There is some broken features but it works in basic examples. ## Versions +* 3.0 + * Rebuild the engine. Now SOAP and JSON works correctly. * 2.6 * Fixed the client when it returns an array of objects. * 2.5 diff --git a/composer.json b/composer.json index 691c148..48ed13e 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "type": "library", "description": "A SOAP webserver for PHP", "license": "MIT", - "version": "2.6", + "version": "3.0", "authors": [ { "name": "Jorge Castro", @@ -16,9 +16,17 @@ "ext-xml": "*", "ext-curl": "*" }, + "require-dev": { + "phpunit/phpunit": "^5.7" + }, "autoload": { "psr-4": { "eftec\\cloudking\\": "lib/" } + }, + "autoload-dev": { + "psr-4": { + "eftec\\tests\\": "tests/" + } } } diff --git a/docs/helloservice.jpg b/docs/helloservice.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50cea82b24410977484f5a2967fb46df6d870f81 GIT binary patch literal 44258 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 literal 0 HcmV?d00001 diff --git a/docs/helloservice2.jpg b/docs/helloservice2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3dd7547a7011b9f4c28c35d016bdf0220e3a6e39 GIT binary patch literal 27861 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 XAKosFMUA6du|~I|;oFJ_yaogSf(r1z literal 0 HcmV?d00001 diff --git a/docs/helloservice3.jpg b/docs/helloservice3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..85421fd11a4256a55356f1585a8553c91eb891ee GIT binary patch literal 37954 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 literal 0 HcmV?d00001 diff --git a/docs/hellosoap.jpg b/docs/hellosoap.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9569b538df298c6206d9a987e72c268700fd6e73 GIT binary patch literal 86568 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 literal 0 HcmV?d00001 diff --git a/docs/hellosoap2.jpg b/docs/hellosoap2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40713bebdb3b4c3136930fe18a7b13b24dc7cd40 GIT binary patch literal 94181 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 literal 0 HcmV?d00001 diff --git a/docs/hellosoap3.jpg b/docs/hellosoap3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80e494847a0971578715300d84fdac3501ac7b3c GIT binary patch literal 75406 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 MhQCar_}2e_0ITIb82|tP literal 0 HcmV?d00001 diff --git a/examples/1.create/CreateWebService.php b/examples/1.create/CreateWebService.php deleted file mode 100644 index 24dcd2a..0000000 --- a/examples/1.create/CreateWebService.php +++ /dev/null @@ -1,7 +0,0 @@ -allowed_input['gui']=$gui; // set to false to disable the web gui. - self::$service->soap12 = false; - self::$service->verbose = 2; - self::$service->allowed_format['POST'] = true; - //self::$service->allowed_format["GET"]=false; - self::$service->variable_type = 'array'; - self::$service->serviceInstance = null; - self::$service->description = 'Example server SoapKing'; - - self::$service->addfunction('ping', - [ - CloudKing::argPrim('ping_param', 's:string'), - ], - [ - CloudKing::argPrim('return', 's:string') - ], - 'Descripcion :Prueba de conexion' - ); - self::$service->addfunction('GetProducto', - [ - CloudKing::argPrim('idProducto', 's:integer') - ], - [ - CloudKing::argComplex('return', 'tns:Producto') - ], - 'Descripcion :obtiene los datos de una objeto' - ); - self::$service->addfunction('InsertProducto' - , array(CloudKing::argComplex('Producto', 'tns:Producto')) - , array(CloudKing::argPrim('return', 's:boolean')) - , 'Descripcion :obtiene los datos de una objeto' - ); - self::$service->addfunction('GetProductos', - [ - - ], - [ - CloudKing::argList('return', 'tns:Producto', 0, 'unbounded') - ], - 'Descripcion :Obtiene una lista de productos' - ); - - // ***** type - self::$service->addtype('Producto', - [ - CloudKing::argPrim('idProduct', 's:integer'), - CloudKing::argPrim('nombre', 's:string'), - CloudKing::argPrim('precio', 's:integer') - ]); - self::$service->addtype('ProductoArray', - [ - CloudKing::argList('Producto', 'tns:Producto', '0', 'unbounded') - ]); - } - public static function run() { - $r = self::$service->run(); - echo $r; - } -} - - - diff --git a/examples/2.service/Example2WSService.php b/examples/2.service/Example2WSService.php deleted file mode 100644 index a53c82d..0000000 --- a/examples/2.service/Example2WSService.php +++ /dev/null @@ -1,85 +0,0 @@ -getDB(); - $values[]=$content; - $r=file_put_contents('data.txt',serialize($values)); - } - - - function ping($ping_param) { - try { - - - return $ping_param; - } catch (Exception $_exception) { - return(array("soap:Fault"=>'Caught exception: '. $_exception->getMessage())); - } - } - - function GetProducto($idProducto) { - try { - - $all=$this->getDB(); - $_Producto=null; - foreach($all as $item) { - if(@$item['idProducto']===$idProducto) { - $_Producto=$item; - break; - } - } - - - return $_Producto; - } catch (Exception $_exception) { - return(array("soap:Fault"=>'Caught exception: '. $_exception->getMessage())); - } - } - - function InsertProducto($Producto) { - - $all=$this->getDB(); - $all[]=$Producto; - $this->saveDB($all); - return count($all); - - } - - function GetProductos() { - - return $this->getDB(); - - } - - function factoryProducto($idProduct=0,$nombre='',$precio=0) { - $_Producto['idProduct']=$idProduct; - $_Producto['nombre']=$nombre; - $_Producto['precio']=$precio; - - } - - function factoryProductoArray($Producto=array()) { - $_ProductoArray['Producto']=$Producto; - - } -} // end class - -/************************************ Complex Types (Classes) ************************************/ - -class Producto { - var $idProduct; // s:integer - var $nombre; // s:string - var $precio; // s:integer -} - -class ProductoArray { - var $Producto; // tns:Producto -} \ No newline at end of file diff --git a/examples/3.join/WebService.php b/examples/3.join/WebService.php deleted file mode 100644 index 2e007aa..0000000 --- a/examples/3.join/WebService.php +++ /dev/null @@ -1,10 +0,0 @@ -serviceInstance=new Example2WSService(); // we tied the web service with our service class - -Definition::run(); \ No newline at end of file diff --git a/examples/3.join/data.txt b/examples/3.join/data.txt deleted file mode 100644 index 00eea1a..0000000 --- a/examples/3.join/data.txt +++ /dev/null @@ -1 +0,0 @@ -a:4:{i:0;a:3:{s:10:"idProducto";s:1:"2";s:6:"nombre";s:1:"3";s:6:"precio";s:1:"4";}i:1;a:3:{s:10:"idProducto";s:1:"2";s:6:"nombre";s:1:"3";s:6:"precio";s:1:"4";}i:2;a:3:{s:10:"idProducto";s:1:"6";s:6:"nombre";s:6:"fdfdfd";s:6:"precio";s:6:"dffdfd";}i:3;a:3:{s:9:"idProduct";s:1:"1";s:6:"nombre";s:9:"product 1";s:6:"precio";s:3:"555";}} \ No newline at end of file diff --git a/examples/4.client/Example2WSClient.php b/examples/4.client/Example2WSClient.php deleted file mode 100644 index 0e6319a..0000000 --- a/examples/4.client/Example2WSClient.php +++ /dev/null @@ -1,102 +0,0 @@ - - * Example server SoapKing
- * This code was generated automatically using CloudKing v2.5, Date:Sun, 18 Oct 2020 23:08:41 -0300
- * Using the web:http://localhost/currentproject/cloudking/examples/1.create/CreateWebService.php?source=phpclient - */ -class Example2WSClient { - /** @var string The full url where is the web service */ - protected $url='http://localhost/currentproject/cloudking/examples/3.join/WebService.php'; - /** @var string The namespace of the web service */ - protected $tempuri='examplenamespace'; - /** @var string The last error. It is cleaned per call */ - public $lastError=''; - /** @var float=[1.1,1.2][$i] The SOAP used by default */ - protected $soap=1.1; - /** @var CloudKingClient */ - public $service; - /** - * Example2WSClient constructor. - * - * @param string|null $url The full url (port) of the web service - * @param string|null $tempuri The namespace of the web service - * @param float|null $soap=[1.1,1.2][$i] The SOAP used by default - */ - public function __construct($url=null, $tempuri=null, $soap=null) { - $url!==null and $this->url = $url; - $tempuri!==null and $this->tempuri = $tempuri; - $soap!==null and $this->soap = $soap; - $this->service=new CloudKingClient($this->soap,$this->tempuri); - } - - - /** - * Descripcion :Prueba de conexion - * - * @param mixed $ping_param (s:string) - * @return mixed (s:string) - * @noinspection PhpUnused */ - public function ping($ping_param) { - $_param=''; - $_param.=$this->service->array2xml($ping_param,'ts:ping_param',false,false); - $resultado=$this->service->loadurl($this->url,$_param,'ping'); - $this->lastError=$this->service->lastError; - if(!is_array($resultado)) { - return false; // error - } - return @$resultado['pingResult']; - } - - /** - * Descripcion :obtiene los datos de una objeto - * - * @param mixed $idProducto (s:integer) - * @return mixed (tns:Producto) - * @noinspection PhpUnused */ - public function GetProducto($idProducto) { - $_param=''; - $_param.=$this->service->array2xml($idProducto,'ts:idProducto',false,false); - $resultado=$this->service->loadurl($this->url,$_param,'GetProducto'); - $this->lastError=$this->service->lastError; - if(!is_array($resultado)) { - return false; // error - } - return @$resultado['GetProductoResult']; - } - - /** - * Descripcion :obtiene los datos de una objeto - * - * @param mixed $Producto (tns:Producto) - * @return mixed (s:boolean) - * @noinspection PhpUnused */ - public function InsertProducto($Producto) { - $_param=''; - $_param.=$this->service->array2xml($Producto,'ts:Producto',false,false); - $resultado=$this->service->loadurl($this->url,$_param,'InsertProducto'); - $this->lastError=$this->service->lastError; - if(!is_array($resultado)) { - return false; // error - } - return @$resultado['InsertProductoResult']; - } - - /** - * Descripcion :Obtiene una lista de productos - * - * @return mixed (tns:Producto) - * @noinspection PhpUnused */ - public function GetProductos() { - $_param=''; - $resultado=$this->service->loadurl($this->url,$_param,'GetProductos'); - $this->lastError=$this->service->lastError; - if(!is_array($resultado)) { - return false; // error - } - return @$resultado['GetProductosResult']; - } -} // end Example2WSClient \ No newline at end of file diff --git a/examples/Definition.php b/examples/Definition.php new file mode 100644 index 0000000..c68bd36 --- /dev/null +++ b/examples/Definition.php @@ -0,0 +1,124 @@ +allowed_input['gui']=$gui; // set to false to disable the web gui. + self::$service->soap12 = false; // if we want to use soap 1.2 + self::$service->verbose = 2; // for debug purpose + + //self::$service->allowed_format["GET"]=false; + self::$service->serviceInstance = null; + self::$service->description = 'Example server SoapKing'; + // ***** complex types + self::$service->addtype('Producto', + [ + self::$service->param('idProduct', 'int',false,true, 'comentario'), + self::$service->param('nombre', 'string'), + self::$service->param('precio', 'int') + ]); + self::$service->addtype('InvoiceDetail', [ + self::$service->param('idInvoiceDetail', 'int',false,true), + self::$service->param('idInvoice', 'int'), + self::$service->param('detail', 'string') + ]); + self::$service->addtype('Invoice', [ + self::$service->param('idInvoice', 'int',false,true,'type invoice'), + self::$service->paramList('details','InvoiceDetail'), + ]); + + + self::$service->addfunction('GetInvoice' + , [self::$service->param('idInvoice','int',false,true,'the id of the invoice to get')] + , [self::$service->param('Invoice', 'Invoice')] + , 'Description :get invoices'); + + self::$service->addfunction('ping', + [ + self::$service->param('ping_param', 'string',true,false), + ], + [ + self::$service->param('return', 'string') + ], + 'Description :Prueba de conexion' + ); + self::$service->addfunction('pingshot', + [ + self::$service->param('ping_param', 'string'), + ],null, + 'Description :Prueba de conexion' + ); + self::$service->addfunction('doubleping', + [ + self::$service->param('ping_param1', 'string'), + self::$service->param('ping_param2', 'string'), + ], + [ + self::$service->param('return', 'string') + ], + 'Description :Prueba de conexion' + ); + + self::$service->addfunction('GetProducto', + [ + self::$service->param('idProducto', 'int',false,true,'id del producto') + ], + [ + self::$service->param('return', 'Producto',false) + ], + 'Description :obtiene los datos de una objeto' + ); + self::$service->addfunction('InsertProducto' + , array(self::$service->param('Producto', 'Producto')) + , array(self::$service->param('return', 'int')) + , 'Description :obtiene los datos de una objeto' + ); + self::$service->addfunction('UpdateProducto' + , array(self::$service->param('Producto', 'Producto')) + , array(self::$service->param('return', 'boolean')) + , 'Description :obtiene los datos de una objeto' + ); + self::$service->addfunction('DeleteProducto', + [ + self::$service->param('idProducto', 'int',false,true,'id del producto') + ], + [ + self::$service->param('return', 'boolean',false) + ], + 'Description :delete an product' + ); + self::$service->addfunction('GetProductos', + [], + [ + self::$service->paramList('return', 'Producto',false,false,'List of products') + ], + 'Description :Obtiene una lista de productos' + ); + + + } + public static function run() { + $r = self::$service->run(); + echo $r; + } +} + + + diff --git a/examples/Server.php b/examples/Server.php new file mode 100644 index 0000000..aefbe6c --- /dev/null +++ b/examples/Server.php @@ -0,0 +1,12 @@ +folderServer=__DIR__; +Definition::$service->serviceInstance=new Example2WSService(); +Definition::run(); diff --git a/examples/4.client/clientexample2.php b/examples/clienteexample.php similarity index 65% rename from examples/4.client/clientexample2.php rename to examples/clienteexample.php index dd079d8..4151646 100644 --- a/examples/4.client/clientexample2.php +++ b/examples/clienteexample.php @@ -1,14 +1,15 @@ "; var_dump($x->GetProductos()); +var_dump($x->doubleping('a1','a2')); echo "\nErrors:\n"; var_dump($x->lastError); echo ""; diff --git a/examples/service/Example2WSClient.php b/examples/service/Example2WSClient.php new file mode 100644 index 0000000..3394420 --- /dev/null +++ b/examples/service/Example2WSClient.php @@ -0,0 +1,194 @@ + + * Example server SoapKing
+ * This code was generated automatically using CloudKing v3.0, Date:Mon, 26 Oct 2020 18:13:02 -0300
+ * Using the web:http://localhost/currentproject/cloudking/examples/Server.php?source=phpclient + */ +class Example2WSClient { + /** @var string The full url where is the web service */ + protected $url='http://localhost/currentproject/cloudking/examples/Server.php'; + /** @var string The namespace of the web service */ + protected $tempuri='http://www.examplenamespace.cl/'; + /** @var string The last error. It is cleaned per call */ + public $lastError=''; + /** @var float=[1.1,1.2][$i] The SOAP used by default */ + protected $soap=1.1; + /** @var CloudKingClient */ + public $service; + /** + * Example2WSClient constructor. + * + * @param string|null $url The full url (port) of the web service + * @param string|null $tempuri The namespace of the web service + * @param float|null $soap=[1.1,1.2][$i] The SOAP used by default + */ + public function __construct($url=null, $tempuri=null, $soap=null) { + $url!==null and $this->url = $url; + $tempuri!==null and $this->tempuri = $tempuri; + $soap!==null and $this->soap = $soap; + $this->service=new CloudKingClient($this->soap,$this->tempuri); + } + + + /** + * Description :get invoices + * + * @param mixed $idInvoice the id of the invoice to get (s:int) + * @return mixed (tns:Invoice) + * @noinspection PhpUnused */ + public function GetInvoice($idInvoice) { + $_param=''; + $_param.=$this->service->array2xml($idInvoice,'ts:idInvoice',false,false); + $resultado=$this->service->loadurl($this->url,$_param,'GetInvoice'); + $this->lastError=$this->service->lastError; + if(!is_array($resultado)) { + return false; // error + } + return @$resultado['GetInvoiceResult']; + } + + /** + * Description :Prueba de conexion + * + * @param mixed $ping_param (s:string) + * @return mixed (s:string) + * @noinspection PhpUnused */ + public function ping(&$ping_param) { + $_param=''; + $_param.=$this->service->array2xml($ping_param,'ts:ping_param',false,false); + $resultado=$this->service->loadurl($this->url,$_param,'ping'); + $this->lastError=$this->service->lastError; + if(!is_array($resultado)) { + return false; // error + } + $ping_param=@$resultado['ping_param']; + return @$resultado['pingResult']; + } + + /** + * Description :Prueba de conexion + * + * @param mixed $ping_param (s:string) + * @return mixed (void) + * @noinspection PhpUnused */ + public function pingshot($ping_param) { + $_param=''; + $_param.=$this->service->array2xml($ping_param,'ts:ping_param',false,false); + $resultado=$this->service->loadurl($this->url,$_param,'pingshot'); + $this->lastError=$this->service->lastError; + if(!is_array($resultado)) { + return false; // error + } + return @$resultado['pingshotResult']; + } + + /** + * Description :Prueba de conexion + * + * @param mixed $ping_param1 (s:string) + * @param mixed $ping_param2 (s:string) + * @return mixed (s:string) + * @noinspection PhpUnused */ + public function doubleping($ping_param1, $ping_param2) { + $_param=''; + $_param.=$this->service->array2xml($ping_param1,'ts:ping_param1',false,false); + $_param.=$this->service->array2xml($ping_param2,'ts:ping_param2',false,false); + $resultado=$this->service->loadurl($this->url,$_param,'doubleping'); + $this->lastError=$this->service->lastError; + if(!is_array($resultado)) { + return false; // error + } + return @$resultado['doublepingResult']; + } + + /** + * Description :obtiene los datos de una objeto + * + * @param mixed $idProducto id del producto (s:int) + * @return mixed (tns:Producto) + * @noinspection PhpUnused */ + public function GetProducto($idProducto) { + $_param=''; + $_param.=$this->service->array2xml($idProducto,'ts:idProducto',false,false); + $resultado=$this->service->loadurl($this->url,$_param,'GetProducto'); + $this->lastError=$this->service->lastError; + if(!is_array($resultado)) { + return false; // error + } + return @$resultado['GetProductoResult']; + } + + /** + * Description :obtiene los datos de una objeto + * + * @param mixed $Producto (tns:Producto) + * @return mixed (s:int) + * @noinspection PhpUnused */ + public function InsertProducto($Producto) { + $_param=''; + $_param.=$this->service->array2xml($Producto,'ts:Producto',false,false); + $resultado=$this->service->loadurl($this->url,$_param,'InsertProducto'); + $this->lastError=$this->service->lastError; + if(!is_array($resultado)) { + return false; // error + } + return @$resultado['InsertProductoResult']; + } + + /** + * Description :obtiene los datos de una objeto + * + * @param mixed $Producto (tns:Producto) + * @return mixed (s:boolean) + * @noinspection PhpUnused */ + public function UpdateProducto($Producto) { + $_param=''; + $_param.=$this->service->array2xml($Producto,'ts:Producto',false,false); + $resultado=$this->service->loadurl($this->url,$_param,'UpdateProducto'); + $this->lastError=$this->service->lastError; + if(!is_array($resultado)) { + return false; // error + } + return @$resultado['UpdateProductoResult']; + } + + /** + * Description :delete an product + * + * @param mixed $idProducto id del producto (s:int) + * @return mixed (s:boolean) + * @noinspection PhpUnused */ + public function DeleteProducto($idProducto) { + $_param=''; + $_param.=$this->service->array2xml($idProducto,'ts:idProducto',false,false); + $resultado=$this->service->loadurl($this->url,$_param,'DeleteProducto'); + $this->lastError=$this->service->lastError; + if(!is_array($resultado)) { + return false; // error + } + return @$resultado['DeleteProductoResult']; + } + + /** + * Description :Obtiene una lista de productos + * + * @return mixed (tns:ArrayOfProducto) + * @noinspection PhpUnused */ + public function GetProductos() { + $_param=''; + $resultado=$this->service->loadurl($this->url,$_param,'GetProductos'); + $this->lastError=$this->service->lastError; + if(!is_array($resultado)) { + return false; // error + } + return @$resultado['GetProductosResult']; + } +} // end Example2WSClient diff --git a/examples/service/Example2WSService.php b/examples/service/Example2WSService.php new file mode 100644 index 0000000..6fe6bbe --- /dev/null +++ b/examples/service/Example2WSService.php @@ -0,0 +1,159 @@ +getDB(); + foreach($products as $k=>$product) { + if($idProducto==$product['idProduct']) { + return $product; + } + } + return null; + } + + + /** + * @inheritDoc + */ + public function InsertProducto($Producto) { + $products=$this->getDB(); + foreach($products as $k=>$product) { + if($Producto['idProduct']==$product['idProduct']) { + return 0; + } + } + $products[]=$Producto; + $this->saveDB($products); + return 1; + } + + + /** + * @inheritDoc + */ + public function GetProductos() { + return $this->getDB(); + } + + public function UpdateProducto($Producto) { + $products=$this->getDB(); + $found=0; + foreach($products as $k=>$product) { + if($Producto['idProduct']==$product['idProduct']) { + $products[$k]=$Producto; + $found=1; + break; + } + } + $this->saveDB($products); + return $found; + } + + public function DeleteProducto($idProducto) { + $products=$this->getDB(); + $found=0; + foreach($products as $k=>$product) { + if($idProducto==$product['idProduct']) { + array_splice($products,$k,1); + $found=1; + break; + } + } + $this->saveDB($products); + return $found; + } + + public static function factoryProducto($idProduct=null, $nombre=null, $precio=null) { + $_Producto['idProduct']=$idProduct; + $_Producto['nombre']=$nombre; + $_Producto['precio']=$precio; + return $_Producto; + } + + public static function factoryInvoiceDetail($idInvoiceDetail=null, $idInvoice=null, $detail=null) { + $_InvoiceDetail['idInvoiceDetail']=$idInvoiceDetail; + $_InvoiceDetail['idInvoice']=$idInvoice; + $_InvoiceDetail['detail']=$detail; + return $_InvoiceDetail; + } + + public static function factoryArrayOfInvoiceDetail($InvoiceDetail=null) { + $_ArrayOfInvoiceDetail['InvoiceDetail']=$InvoiceDetail; + return $_ArrayOfInvoiceDetail; + } + + public static function factoryInvoice($idInvoice=null, $details=null) { + $_Invoice['idInvoice']=$idInvoice; + $_Invoice['details']=$details; + return $_Invoice; + } + + public static function factoryArrayOfProducto($Producto=null) { + $_ArrayOfProducto['Producto']=$Producto; + return $_ArrayOfProducto; + } + + +} // end class + \ No newline at end of file diff --git a/examples/service/IExample2WSService.php b/examples/service/IExample2WSService.php new file mode 100644 index 0000000..690337f --- /dev/null +++ b/examples/service/IExample2WSService.php @@ -0,0 +1,97 @@ +allowed_input['gui'] = $gui; // set to false to disable the web gui. + self::$service->serviceInstance = null; + self::$service->verbose = 2; // for debug purpose + self::$service->description = 'Example server SoapKing'; + + self::$service->addfunction('hello', + [ + self::$service->param('param', 'string', true, false), + ], + [ + self::$service->param('return', 'string') + ], + 'Example of function' + ); + } + + public static function run() { + $r = self::$service->run(); + echo $r; + } +} \ No newline at end of file diff --git a/examples/startup_example/run_initial.php b/examples/startup_example/run_initial.php new file mode 100644 index 0000000..34d8fac --- /dev/null +++ b/examples/startup_example/run_initial.php @@ -0,0 +1,7 @@ +folderServer=__DIR__; // or you could select any folder.run_initial.php +ExampleDefinition::run(); \ No newline at end of file diff --git a/examples/startup_example/run_with_service.php b/examples/startup_example/run_with_service.php new file mode 100644 index 0000000..6c4e9eb --- /dev/null +++ b/examples/startup_example/run_with_service.php @@ -0,0 +1,12 @@ +folderServer=__DIR__; // or you could select any folder.run_initial.php +ExampleDefinition::$service->serviceInstance=new ExampleHelloService(); +ExampleDefinition::run(); \ No newline at end of file diff --git a/examples/startup_example/service/ExampleHelloService.php b/examples/startup_example/service/ExampleHelloService.php new file mode 100644 index 0000000..2b6c151 --- /dev/null +++ b/examples/startup_example/service/ExampleHelloService.php @@ -0,0 +1,17 @@ + true, 'rest' => true - , 'php' => true, 'xml' => true, 'none' => true,'gui'=>true - ,'phpclient'=>true,'unity'=>true]; + public $allowed_input + = [ + 'json' => true, + 'rest' => true, + 'php' => true, + 'xml' => true, + 'none' => true, + 'gui' => true, + 'phpclient' => true, + 'unity' => true + ]; /** * If the service is not set, then it will be unable to answer any call. + * * @var null|object */ - public $serviceInstance; + public $serviceInstance; public $oem = false; public $encoding = 'UTF-8'; public $custom_wsdl = ''; @@ -44,140 +56,293 @@ class CloudKing public $wsse_nonce = ''; public $wsse_created = ''; // ISO-8859-1 public $wsse_password_type = 'None'; - public $variable_type = 'array'; //Copyright (c)2009 - 2020, SouthProject
www.southprojects.com"; + public $variable_type = 'array'; public $allowed = array('*'); public $disallowed = array(''); - protected $FILE; - protected $NAMESPACE; - protected $NAME_WS; + public $folderServer = ''; + public $lastError = ''; + /** @var string port URL */ + protected $portUrl; + /** @var string the namespace of the web service (with trailing dash) and the classes.
+ * Example: https://www.southprojects.com/ + */ + protected $nameSpace; + /** @var string The name of the web service, such as "myservice" */ + protected $nameWebService; /** @var array ['','None','PasswordDigest','PasswordText'][$i] */ protected $operation; //None, PasswordDigest, PasswordText ///** @var string=['array','object'][$i] it define if the implementation will use array (or primitives) or objects */ protected $complextype; - - protected $predef_types = [ - 'string', - 'long', - 'int', - 'integer', - 'boolean', - 'decimal', - 'float', - 'double', - 'duration', - 'dateTime', - 'time', - 'date', - 'gYearMonth', - 'gYear', - 'gMonthDay', - 'gDay', - 'gMonth', - 'hexBinary', - 'base64Binary', - 'anyURI', - 'QName', - 'NOTATION' - ]; - protected $predef_typesNS = [ - 'string', - 'long', - 'int', - 'integer', - 'boolean', - 'decimal', - 'float', - 'double', - 'duration', - 'dateTime', - 'time', - 'date', - 'gYearMonth', - 'gYear', - 'gMonthDay', - 'gDay', - 'gMonth', - 'hexBinary', - 'base64Binary', - 'anyURI', - 'QName', - 'NOTATION' - ]; - protected $predef_types_num = array( - 'long', - 'int', - 'integer', - 'boolean', - 'decimal', - 'float', - 'double', - 'duration' - ); - - public function __construct($FILE, $NAMESPACE = 'http://test-uri/', $NAME_WS = 'CKService1') { - $this->_CKLIB($FILE, $NAMESPACE, $NAME_WS); - } - private function _CKLIB($FILE, $NAMESPACE, $NAME_WS) { + protected $predef_types + = [ + 'string', + 'long', + 'int', + //'integer', + 'boolean', + 'decimal', + 'float', + 'double', + 'duration', + 'dateTime', + 'time', + 'date', + 'gYearMonth', + 'gYear', + 'gMonthDay', + 'gDay', + 'gMonth', + 'hexBinary', + 'base64Binary', + 'anyURI', + 'QName', + 'NOTATION' + ]; + protected $predef_typesNS + = [ + 'string', + 'long', + 'int', + //'integer', + 'boolean', + 'decimal', + 'float', + 'double', + 'duration', + 'dateTime', + 'time', + 'date', + 'gYearMonth', + 'gYear', + 'gMonthDay', + 'gDay', + 'gMonth', + 'hexBinary', + 'base64Binary', + 'anyURI', + 'QName', + 'NOTATION' + ]; + protected $predef_types_num + = array( + 'long', + 'int', + 'integer', + 'boolean', + 'decimal', + 'float', + 'double', + 'duration' + ); + /** + * CloudKing constructor. + * + * @param string $portUrl The port url where we will do the connection. + * @param string $nameSpace with trailing slash + * @param string $nameWebService + */ + public function __construct($portUrl='', $nameSpace = 'http://test-uri/', $nameWebService = 'CKService1') { + if($portUrl==='') { + if(!isset($_SERVER['SERVER_NAME'])) { + $portUrl = $_SERVER['SCRIPT_NAME']; + } else { + $portUrl = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME']; + } + + } + if (@$_SERVER['HTTPS']) { - $FILE = str_replace('http://', 'https://', $FILE); + $portUrl = str_replace('http://', 'https://', $portUrl); } - $this->FILE = $FILE; + $this->portUrl = $portUrl; - - $this->NAMESPACE = ($NAMESPACE != '') ? $NAMESPACE : $FILE . '/'; - $this->NAME_WS = ($NAME_WS != '') ? $NAME_WS : 'CKService1'; + $this->nameSpace = ($nameSpace != '') ? $nameSpace : $portUrl . '/'; + $this->nameWebService = ($nameWebService != '') ? $nameWebService : 'CKService1'; $this->operation = array(); $this->complextype = array(); - $this->custom_wsdl = $this->FILE . '?wsdl'; + $this->custom_wsdl = $this->portUrl . '?wsdl'; } /** * We add an argument that returns a list of complex. - * - * @param string $name Name of the argument - * @param string $type Type of the complex argument tns:NameComplex or NameComplex - * @param int $minOccurs - * @param string $maxOccurs + * + * @param string $name Name of the argument + * @param string $type Type of the complex argument tns:NameComplex or NameComplex + * @param int $minOccurs Minimum ocurrence,if 0 it means that the value is not required. + * @param string $maxOccurs Maximum ocurrences. If "unbounded" means unlimited. + * @param false $byref If the value will be returned. + * @param string $description (optional) the description of the web service. + * + * @return array + */ + public static function argList( + $name = 'return', + $type = 'tns:*', + $minOccurs = 0 + , + $maxOccurs = 'unbounded', + $byref = false, + $description = '' + ) { + $type = strpos($type, ':') === false ? 'tns:' . $type : $type; + return [ + 'name' => $name, + 'type' => $type, + 'minOccurs' => $minOccurs + , + 'maxOccurs' => $maxOccurs, + 'byref' => $byref, + 'description' => $description + ]; + } + + /** + * @param string $nameParam the name of the parameter. If it is return, then uses 'return' + * @param string $type =$this->predef_typesNS[$i] + * @param false $byref + * @param false $required + * @param string $description + * + * @return array + */ + public function paramList( + $nameParam = 'return', + $type = '', + $byref = false, + $required = false + , + $description = '' + ) { + + if (in_array($type, $this->predef_typesNS)) { + $primitive = true; + $prefix = 's:'; + } else { + $found = $this->findComplexByName($type); + if ($found === false) { + throw new RuntimeException("paramList: Type [$type] not defined"); + } + $primitive = false; + $prefix = 'tns:'; + } + if (!$primitive) { + $newType = 'ArrayOf' . $type; + $found = $this->findComplexByName($newType); + if (!$found) { + // we add a new complex type + $this->addtype($newType, array( + self::argList($type, $prefix . $type, '0', 'unbounded') + )); + } + } else { + $newType = 'ArrayOf' . $type; + } + return self::argList($nameParam, $newType, ($required ? 1 : 0), 1, $byref, $description); + } + + /** + * @param string $nameParam + * @param string $type =$this->predef_typesNS[$i] * @param false $byref + * @param false $required + * @param string $description * * @return array */ - public static function argList($name = 'return', $type = 'tns:*', $minOccurs = 0 - , $maxOccurs = 'unbounded', $byref = false) { - $type=strpos($type,':')===false ? 'tns:'.$type : $type; - return ['name' => $name, 'type' => $type, 'minOccurs' => $minOccurs - , 'maxOccurs' => $maxOccurs, 'byref' => $byref]; + public function param($nameParam, $type, $byref = false, $required = false, $description = '') { + if (in_array($type, $this->predef_typesNS)) { + $prefix = 's:'; + } else { + $found = $this->findComplexByName($type); + if ($found === false) { + throw new RuntimeException("paramList: Type [$type] not defined"); + } + $prefix = 'tns:'; + } + return self::argPrim($nameParam, $prefix . $type, $byref, $required, $description); + } + + /** + * It finds a complex type. If not found then it returns false. + * + * @param string $nameType without namespace + * + * @return false|mixed + */ + private function findComplexByName($nameType) { + if (isset($this->complextype[$nameType])) { + return $this->complextype[$nameType]; + } + return false; + } + + private function findOperationByName($nameOp) { + if (isset($this->operation[$nameOp])) { + return $this->operation[$nameOp]; + } + return false; } /** * We add a primary argument - * - * @param string $name Name of the argument - * @param string $type=$this->predef_typesNS[$i] It could be "s:int" or "int" - * @param bool $byref if true then it returns the value + * + * @param string $name Name of the argument + * @param string $type =$this->predef_typesNS[$i] It could be "s:int" or "int" + * @param bool $byref if true then it returns the value + * @param bool $required if true then the value is required + * @param string $description (optional) the description + * * @return array - * @see \eftec\cloudking\CloudKing::$predef_typesNS - * + * @see \eftec\cloudking\CloudKing::$predef_typesNS */ - public static function argPrim($name = 'return', $type = 's:*', $byref = false) { - $type=strpos($type,':')===false ? 's:'.$type : $type; - return ['name' => $name, 'type' => $type, 'byref' => $byref]; + public static function argPrim( + $name = 'return', + $type = 's:*', + $byref = false, + $required = false, + $description = '' + ) { + $type = strpos($type, ':') === false ? 's:' . $type : $type; + return [ + 'name' => $name, + 'type' => $type, + 'byref' => $byref + , + 'minOccurs' => ($required) ? '1' : '0', + 'description' => $description + ]; } /** * We add a complex argument (Comple arguments are added with the method addType) - * - * @param string $name Name of the argument - * @param string $type Type of the complex argument (SOAP specification) + * + * @param string $name Name of the argument + * @param string $type Type of the complex argument (SOAP specification) * @param false $byref if true then it returns the value + * @param bool $required + * @param string $description * * @return array */ - public static function argComplex($name = 'return', $type = 'tns:*', $byref = false) { - $type=strpos($type,':')===false ? 'tns:'.$type : $type; - return ['name' => $name, 'type' => $type, 'byref' => $byref]; + public static function argComplex( + $name = 'return', + $type = 'tns:*', + $byref = false + , + $required = false, + $description = '' + ) { + $type = strpos($type, ':') === false ? 'tns:' . $type : $type; + return [ + 'name' => $name, + 'type' => $type, + 'byref' => $byref + , + 'minOccurs' => ($required) ? '1' : '0', + 'description' => $description + ]; } public function set_copyright($copyright) { @@ -204,7 +369,7 @@ public function password_correct($password, $type = 'None') { } return true; } - + public function run() { $result = ''; if (!$this->security()) { @@ -212,122 +377,137 @@ public function run() { } global $_REQUEST; $param = @$_SERVER['QUERY_STRING'] . '&='; + $p = strpos($param, '&'); $p1 = strpos($param, '='); $paraminit = substr($param, 0, min($p, $p1)); // ?{value}&other=aaa - //$HTTP_RAW_POST_DATA=@$GLOBALS['HTTP_RAW_POST_DATA']; $HTTP_RAW_POST_DATA = file_get_contents('php://input'); + $isget = isset($_SERVER['REQUEST_METHOD']) + ? $_SERVER['REQUEST_METHOD'] === 'GET' + : true; + - $isget = false; - $methodcalled = ($paraminit == '') ? 'soap' : $paraminit; - $methoddefined = false; - if ($this->get && strlen($methodcalled) >= 3 && strpos($methodcalled, 'get') === 0) { - $methodcalled = str_replace('get', '', $methodcalled); - $methodcalled = ($methodcalled == '' ? 'none' : $methodcalled); - $isget = true; - $methoddefined = true; - } - if ($this->post && strlen($methodcalled) >= 4 && strpos($methodcalled, 'post') === 0) { - $methodcalled = str_replace('post', '', $methodcalled); - $methodcalled = ($methodcalled == '' ? 'none' : $methodcalled); - $isget = false; - $methoddefined = true; - } + //$info = explode('/', @$_SERVER['PATH_INFO']); + //$functionName = (count($info) >= 2) ? $info[1] : ''; + //$functionTypeOut = (count($info) >= 3) ? $info[2] : $methodcalled; - $info = explode('/', @$_SERVER['PATH_INFO']); - $function_name = (count($info) >= 2) ? $info[1] : 'unknown_unknown'; - $function_out = (count($info) >= 3) ? $info[2] : $methodcalled; + $functionName = isset($_GET['_op']) ? $_GET['_op'] : ''; + $functionTypeOut = isset($_GET['_out']) ? $_GET['_out'] : $paraminit; - if ($this->get && count($info) >= 4) { - // is passing more that the functionname && output type 0> is rest myphp?php/functionname/typeout/p1/p2.... - $isget = true; - $methodcalled = 'rest'; - $methoddefined = true; - } - if ($this->soap12) { - if (!$methoddefined && !$HTTP_RAW_POST_DATA && $function_name !== 'unknown_unknown' && $this->get) { + $methoddefined = false; + if ($this->soap12 || $this->soap11) { + /*if (!$paraminit && $functionName !== '' && $isget) { // mypage.php/functioname?param1=...... - $methodcalled = 'none'; - $function_out = 'xml'; + $paraminit = 'soap'; + //$functionTypeOut = 'xml'; $isget = true; $methoddefined = true; + }*/ + // url.php? (POST) + if ($paraminit === '' && $functionName === '' && !$isget) { + $paraminit = 'soap'; } - if (!$methoddefined && $function_name !== 'unknown_unknown' && $this->post) { + /*if (!$paraminit && $functionName !== '' && $this->post) { // mypage.php/functioname (it must be soap http post). - - $methodcalled = 'none'; - $function_out = 'xml'; + $paraminit = 'soap'; + $functionTypeOut = 'xml'; $HTTP_RAW_POST_DATA = ' '; // only for evaluation. $isget = false; $methoddefined = true; - } + }*/ } - if (!@$this->allowed_input[$methodcalled] && $methoddefined) { + if (!@$this->allowed_input[$paraminit] && $methoddefined) { - trigger_error("method $methodcalled not allowed. Did you use SOAP 1.1 or 1.2?", E_USER_ERROR); + trigger_error("method $paraminit not allowed. Did you use SOAP 1.1 or 1.2?", E_USER_ERROR); } - - if ($isget || $HTTP_RAW_POST_DATA != '') { - // is trying to evaluate a function. - - // ejemplo :http://www.micodigo.com/webservice.php/functionname/xml?getjson&value1={json..}&value2={json} - //info(0)=0 - //info(1)=functionname - //info(2)=serialize return type (optional, by default is the same name as passed) - - - $res = false; - switch ($methodcalled) { - case 'soap': - case 'wsdl': - $res = $this->requestSOAP($HTTP_RAW_POST_DATA); - break; - case 'json': - case 'rest': - case 'php': - case 'xml': - case 'none': - - $res = $this->requestNOSOAP($function_name, $function_out, $methodcalled, $isget, $info); - break; - } - if ($res) { + if ($this->folderServer) { + @$save = @$_GET['save']; + } else { + $save = null; + } + switch ($paraminit) { + case 'soap': + $res = $this->requestSOAP($HTTP_RAW_POST_DATA); $result .= $res; return $result; - } + case 'json': + case 'rest': + case 'php': + case 'xml': + case 'none': - return false; - } + $res = $this->requestNoSOAP($functionName, $functionTypeOut, $paraminit, $isget, $HTTP_RAW_POST_DATA); + $result .= $res; + return $result; - switch ($paraminit) { case 'wsdl': header('content-type:text/xml;charset=' . $this->encoding); $result .= $this->genwsdl(); return $result; case 'source': if ($this->verbose >= 2) { - $source=@$_GET['source']; - if(!$source) { + $source = @$_GET['source']; + if (!$source) { header('content-type:text/html'); $result .= $this->source(); break; } - if(!isset($this->allowed_input[$source])) { - $result.='Method not allowed'; + if (!isset($this->allowed_input[$source])) { + $result .= 'Method not allowed'; return $result; } - if($this->allowed_input[$source]===false) { - $result.='Method not allowed'; + if ($this->allowed_input[$source] === false) { + $result .= 'Method not allowed'; return $result; } switch ($source) { case 'php': header('content-type:text/plain;charset=' . $this->encoding); - $result .= $this->genphp(); + $result .= $this->generateServiceClass(true); + if ($save) { + echo "┌───────────────────────┐\n"; + echo "│ Saving │\n"; + echo "└───────────────────────┘\n"; + $folder = $this->folderServer . '\service'; + if (@!mkdir($folder) && !is_dir($folder)) { + $this->lastError = "Directory $folder was not created"; + return ''; + } + $file = "$folder\\I{$this->nameWebService}Service.php"; + $r = file_put_contents($file, "nameWebService}Service.php"; + if (!file_exists($file)) { + $r = file_put_contents($file, "generateServiceClass()); + if ($r) { + echo "Info: File $file saved\n"; + } else { + echo "Error: unable to save file $file\n"; + } + } else { + echo "Note: File $file already exist, skipped\n"; + } + $file = "$folder\\{$this->nameWebService}Client.php"; + $result = $this->genphpclient(); + $r = file_put_contents($file, $result); + if ($r) { + echo "Info: File $file saved\n"; + } else { + echo "Error: unable to save file $file\n"; + } + + echo "┌───────────────────────┐\n"; + echo "│ Done │\n"; + echo "└───────────────────────┘\n"; + } break; case 'phpclient': header('content-type:text/plain;charset=' . $this->encoding); @@ -350,11 +530,11 @@ public function run() { } break; } - if ($this->allowed_input['gui']===true) { + if ($this->allowed_input['gui'] === true) { $result .= $this->gen_description(); } else { $result .= $this->html_header(); - $result .= 'Name Web Service :' . $this->NAME_WS . '
'; + $result .= 'Name Web Service :' . $this->nameWebService . '
'; $result .= 'Method not allowed
'; $result .= $this->html_footer(); } @@ -362,8 +542,8 @@ public function run() { } private function security() { - $ip = $_SERVER['REMOTE_ADDR']; - $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']); + $ip =(isset($_SERVER['REMOTE_ADDR']))?$_SERVER['REMOTE_ADDR']:'0.0.0.0'; + $hostname = gethostbyaddr($ip); foreach ($this->disallowed as $value) { if ($value == $hostname || $value == $ip) { echo("host $ip $hostname not allowed (blacklist)\n"); @@ -381,13 +561,13 @@ private function security() { /** * It is called when we request a SOAP (a client called our web service as SOAP) - * + * * @param $HTTP_RAW_POST_DATA * * @return string|string[] */ private function requestSOAP($HTTP_RAW_POST_DATA) { - global $param, $r; + global $param, $resultService; $soapenv = ''; if ($this->soap11 && strpos($HTTP_RAW_POST_DATA, 'http://schemas.xmlsoap.org/soap/envelope/')) { header('content-type:text/xml;charset=' . $this->encoding); @@ -401,7 +581,7 @@ private function requestSOAP($HTTP_RAW_POST_DATA) { die('soap incorrect or not allowed'); } $arr = $this->xml2array($HTTP_RAW_POST_DATA); - + $this->wsse_username = @$arr['Envelope']['Header']['Security']['UsernameToken']['Username']; $this->wsse_password = @$arr['Envelope']['Header']['Security']['UsernameToken']['Password']; $this->wsse_nonce = @$arr['Envelope']['Header']['Security']['UsernameToken']['Nonce']; @@ -415,109 +595,100 @@ private function requestSOAP($HTTP_RAW_POST_DATA) { } else { $this->wsse_password_type = 'None'; } - $body=$arr['Envelope']['Body']; + $body = $arr['Envelope']['Body']; $funcion = array_keys($body); - $function_name0 = $funcion[0]; // as expressed in the xml - $function_name = $this->fixtag($function_name0); // "tem:getSix" (deberia ser solo una funcion?) + $functionNameXML = $funcion[0]; // as expressed in the xml + $functionName = $this->fixtag($functionNameXML); // "tem:getSix" (deberia ser solo una funcion?) // pasar los parametros $param = array(); - $paramt = []; $i = 0; - $indice_operation = -1; - foreach ($this->operation as $key => $value) { - if ($value['name'] == $function_name) { - $indice_operation = $key; - } - } - if ($indice_operation >= 0) { - $my_operation = $this->operation[$indice_operation]; - foreach ($my_operation['in'] as $value) { - $param[] = @$body[$function_name0][$value['name']]; - + $myOperation = $this->findOperationByName($functionName); + if ($myOperation !== false) { + + foreach ($myOperation['in'] as $key => $value) { + $param[] = @$body[$functionNameXML][$key]; + if (empty($param[$i])) { $param[$i] = ''; } - $paramt []= @$param[' . $i . ']; + $i++; } if ($this->variable_type === 'object') { // convert all parameters in classes. - foreach ($param as $key => $value) { - $classname = $my_operation['in'][$key]['type']; + foreach ($param as $nameOperation => $value) { + $classname = $myOperation['in'][$nameOperation]['type']; if (strpos($classname, 'tns:', 0) !== false) { - - $param[$key] = $this->array2class($value, $this->fixtag($classname)); + + $param[$nameOperation] = $this->array2class($value, $this->fixtag($classname)); } } } //$param_count = count($param); - $r = ''; + $resultService = ''; - $evalret=false; - - if ($this->serviceInstance === null ) { - $evalret = array('soap:Fault' => 'Caught exception: no service instance'); - } elseif(method_exists($this->serviceInstance,$function_name)) { - try { - $r = $this->serviceInstance->$function_name(...$paramt); - } catch(\Exception $ex) { - $evalret = array('soap:Fault' => 'Caught exception: '.$ex->getMessage()); - } - } else { - $evalret = array('soap:Fault' => 'Caught exception: method not defined'); - } - if ($this->variable_type === 'object') { - $classname = $my_operation['out'][0]['type']; - if (strpos($classname, 'tns:', 0) !== false) { - //$ttype = $this->fixtag($classname); - $r = $this->class2array($r, $this->fixtag($classname)); + $errorSOAP = false; + if ($this->serviceInstance === null) { + $errorSOAP = $this->returnErrorSOAP('Caught exception: no service instance' + , 'Caught exception: no service instance', 'Server'); + } elseif (method_exists($this->serviceInstance, $functionName)) { + try { + $resultService = $this->serviceInstance->$functionName(...$param); + } catch (RuntimeException $ex) { + $errorSOAP = $this->returnErrorSOAP('Caught exception: ' . $ex->getMessage(), + 'Caught exception: ' . $ex->getMessage(), 'Server'); } - //$r=@$r[$ttype]; + } else { + $errorSOAP = $this->returnErrorSOAP('Caught exception: method not defined ', + 'Caught exception: method not defined in service', 'Server'); } } else { - $evalret = array('soap:Fault' => 'Caught exception: function not defined'); - } - if (!isset($my_operation)) { - $evalret = array('soap:Fault' => 'Caught exception: no operation found'); - return $evalret; // no operation + $errorSOAP = $this->returnErrorSOAP('Caught exception: method not defined ', + 'Caught exception: method not defined in wsdl', 'Server'); } - if (is_array($r)) { + if (is_array($resultService)) { - $objectName = @$my_operation['out'][0]['name']; - if (!$objectName) { - $classname = $my_operation['out'][0]['type']; - $objectName = $this->separateNS($classname); - } + //var_dump($myOperation); + + $objectName = @$myOperation['out']['name']; + $classname = $objectName ? $myOperation['out']['type'] : ''; + //var_dump($objectName); + //var_dump($r); // the \n is for fixarray2xml - $serial = "\n" . $this->array2xml($r, 'array', false, false, $objectName) . "\n"; + + if (strpos($classname, 'tns:ArrayOf') === 0) { + $serial = "\n" . $this->array2xmlList($resultService, $classname) + . "\n"; // the last \n is important to cut the last value + } else { + $serial = "\n" . $this->array2xml($resultService, 'array', false, false, $classname) + . "\n"; // the last \n is important to cut the last value + } + + //var_dump($serial); $l = strlen($serial); if (($l > 2) && $serial[$l - 1] === "\n") { $serial = substr($serial, 0, $l - 1); } $serial = $this->fixarray2xml($serial); - if (@$r['soap:Fault'] != '') { - $evalret = false; - } } else { - $serial = $r; + $serial = $resultService; } // agregamos si tiene valor byref. $extrabyref = ''; $indice = 0; - $value = $this->operation[$indice_operation]; - foreach ($value['in'] as $key2 => $value2) { + foreach ($myOperation['in'] as $key2 => $value2) { if (@$value2['byref']) { $paramtmp = @$param[$indice]; if (is_array($paramtmp)) { @@ -526,50 +697,55 @@ private function requestSOAP($HTTP_RAW_POST_DATA) { } else { $tmp2 = $paramtmp; } - $extrabyref .= '<' . $value2['name'] . '>' . $tmp2 . ''; + $extrabyref .= '<' . $key2 . '>' . $tmp2 . ''; } $indice++; } - - if ($evalret === false) { + if ($errorSOAP === false) { + // no error $resultado = 'encoding . '"?>'; - $resultado .= '' . - "\n"; - $resultado .= "<{$function_name}Response xmlns=\"{$this->NAMESPACE}\">"; - $resultado .= "<{$function_name}Result>{$serial}"; + $resultado .= "'; + $resultado .= "\n<{$functionName}Response xmlns=\"{$this->nameSpace}\">"; + $resultado .= "<{$functionName}Result>{$serial}"; $resultado .= $extrabyref; - $resultado .= ""; + $resultado .= ""; $resultado .= ''; $resultado .= ''; } else { - $resultado = '' . - "\n"; - $resultado .= 'soap:Sender' . - $function_name . ' failed to evaluate .' . @$evalret['soap:Fault'] . ''; - $resultado .= ''; + // error + $resultado = 'encoding . '"?>'; + $resultado .= $errorSOAP; } - return $resultado; } - public function returnErrorSOAP($soapVersion,$reason,$message,$code) { - if($soapVersion>=1.2) { - $xml=<<soap12) { + $xml = << - env:Sender + env:$code $reason NAMESPACE}> + xmlns:e={$this->nameSpace}> $message $code @@ -579,17 +755,17 @@ public function returnErrorSOAP($soapVersion,$reason,$message,$code) { TAG; } else { - $xml=<< - soap:VersionMismatch + soap:Server $message - {$this->NAMESPACE} + {$this->nameSpace} @@ -597,10 +773,12 @@ public function returnErrorSOAP($soapVersion,$reason,$message,$code) { TAG; } + return $xml; } + public function xml2array($xml) { - $parentKey=[]; - $result=[]; + $parentKey = []; + $result = []; $parser = xml_parser_create(''); xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'utf-8'); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); @@ -608,23 +786,22 @@ public function xml2array($xml) { @xml_parse_into_struct($parser, trim($xml), $xmls); xml_parser_free($parser); - - foreach($xmls as $x) { - $type=@$x['type']; - $level=@$x['level']; - $value=@$x['value']; - $tag=@$x['tag']; + foreach ($xmls as $x) { + $type = @$x['type']; + $level = @$x['level']; + $value = @$x['value']; + $tag = @$x['tag']; switch ($type) { case 'open': - $ns=$this->separateNS($tag); + $ns = $this->separateNS($tag); /*if(!isset($parentKey[$level])) { $parentKey[$level]=$ns; } else { $parentKey[$level]++; } */ - $parentKey[$level]=$ns; - $this->addElementArray($result,$parentKey,$level,$ns,[]); + $parentKey[$level] = $ns; + $this->addElementArray($result, $parentKey, $level, $ns, []); break; case 'close': //$parentKey[$level]++; @@ -644,62 +821,72 @@ public function xml2array($xml) { * $this->addElementArray($arr,['level1','level2'],3,'newlevel','hello']); * // $arr=['level1']['level2']['newlevel']=>'hello' * - * - * @param array $array The result array. - * @param array $keys the parent node - * @param int $level the level where we will add a new node - * @param string $tag the tag of the new node - * @param mixed $value the value of the new node + * + * @param array $array The result array. + * @param array $keys the parent node + * @param int $level the level where we will add a new node + * @param string $tag the tag of the new node + * @param mixed $value the value of the new node */ - private function addElementArray(&$array,$keys,$level,$tag,$value) { + private function addElementArray(&$array, $keys, $level, $tag, $value) { // we removed any namespace -> - foreach($keys as $k=>$v) { - if(strpos($v,':')!==false) { - $keys[$k]=explode(':',$v,2)[1]; + foreach ($keys as $k => $v) { + if (strpos($v, ':') !== false) { + $keys[$k] = explode(':', $v, 2)[1]; } } - if(strpos($tag,':')!==false) { - $tag=explode(':',$tag,2)[1]; + if (strpos($tag, ':') !== false) { + $tag = explode(':', $tag, 2)[1]; } // we store the value form the xml in our array. switch ($level) { case 1: - $array[$tag]=$value; + $array[$tag] = $value; break; case 2: - $array[$keys[1]][$tag]=$value; + $array[$keys[1]][$tag] = $value; break; case 3: - $array[$keys[1]][$keys[2]][$tag]=$value; + $array[$keys[1]][$keys[2]][$tag] = $value; break; case 4: - $array[$keys[1]][$keys[2]][$keys[3]][$tag]=$value; + $array[$keys[1]][$keys[2]][$keys[3]][$tag] = $value; break; case 5: - $array[$keys[1]][$keys[2]][$keys[3]][$keys[4]][$tag]=$value; + $array[$keys[1]][$keys[2]][$keys[3]][$keys[4]][$tag] = $value; break; case 6: - $array[$keys[1]][$keys[2]][$keys[3]][$keys[4]][$keys[5]][$tag]=$value; + $array[$keys[1]][$keys[2]][$keys[3]][$keys[4]][$keys[5]][$tag] = $value; break; case 7: $array[$keys[1]][$keys[2]][$keys[3]][$keys[4]][$keys[5]][$keys[6]] - [$tag]=$value; + [$tag] + = $value; break; case 8: $array[$keys[1]][$keys[2]][$keys[3]][$keys[4]][$keys[5]][$keys[6]] - [$keys[7]][$tag]=$value; + [$keys[7]][$tag] + = $value; break; case 9: $array[$keys[1]][$keys[2]][$keys[3]][$keys[4]][$keys[5]][$keys[6]] - [$keys[7]][$keys[8]][$tag]=$value; + [$keys[7]][$keys[8]][$tag] + = $value; break; case 10: $array[$keys[1]][$keys[2]][$keys[3]][$keys[4]][$keys[5]][$keys[6]] - [$keys[7]][$keys[8]][$keys[9]][$tag]=$value; + [$keys[7]][$keys[8]][$keys[9]][$tag] + = $value; break; case 11: $array[$keys[1]][$keys[2]][$keys[3]][$keys[4]][$keys[5]][$keys[6]] - [$keys[7]][$keys[8]][$keys[9]][$keys[10]][$tag]=$value; + [$keys[7]][$keys[8]][$keys[9]][$keys[10]][$tag] + = $value; + break; + case 12: + $array[$keys[1]][$keys[2]][$keys[3]][$keys[4]][$keys[5]][$keys[6]] + [$keys[7]][$keys[8]][$keys[9]][$keys[10]][$keys[11]][$tag] + = $value; break; } } @@ -718,13 +905,13 @@ private function array2class($arr, $newclass) { $serialized_parts[2] = '"' . $newclass . '"'; $result = unserialize(implode(':', $serialized_parts)); // aqui recorremos los miembros - $idx = $this->findIdxComplexType($newclass); - if ($idx == -1) { + $complex = $this->findComplexByName($newclass); + if ($complex === false) { trigger_error('Complex Type ' . $newclass . ' not found', E_USER_ERROR); } - foreach ($this->complextype[$idx]['elements'] as $value) { + foreach ($complex as $nameComplex => $value) { if (strpos($value['type'], 'tns:', 0) !== false) { - $result->$value['name'] = $this->array2class($result->$value['name'] + $result->$nameComplex = $this->array2class($result->$nameComplex , $this->fixtag($value['type'])); } } @@ -736,10 +923,10 @@ private function class2array($class, $classname) { if (is_object($class)) { $resultado = (array)$class; - $idx = $this->findIdxComplexType($classname); - foreach ($this->complextype[$idx]['elements'] as $value) { + $complex = $this->findComplexByName($classname); + foreach ($complex as $nameComplex => $value) { if (strpos($value['type'], 'tns:', 0) !== false) { - $this->class2array($resultado[$value['name']], $this->fixtag($value['type'])); + $this->class2array($resultado[$nameComplex], $this->fixtag($value['type'])); //$tmp=$this->class2array($resultado[$value['name']], $this->fixtag($value['type'])); //if ($tmp != "") { //$resultado[$value['name']]=$tmp; @@ -752,17 +939,6 @@ private function class2array($class, $classname) { return $resultado; } - private function findIdxComplexType($complexname) { - - foreach ($this->complextype as $key => $value) { - if ($value['name'] == $complexname) { - return $key; - } - } - return -1; - - } - protected function fixtag($tag) { $arr = explode(':', $tag); return ($arr[count($arr) - 1]); @@ -770,6 +946,7 @@ protected function fixtag($tag) { /** * @param $tnsName + * * @return mixed|string */ private function separateNS($tnsName) { @@ -780,27 +957,57 @@ private function separateNS($tnsName) { return $r[1]; } - public function array2xml($array, $name = 'root', $contenttype = true, $start = true, $keyx = '') { + /** + * It generates a xml form an array. + * + * @param string|array $array the input array + * @param string $name The name of the first node + * @param bool $contenttype if true then it shows the initial content type + * @param bool $start if true then it is the first and initial node. + * @param string $expected The expected node type with the namespace + * + * @return string + */ + public function array2xml($array, $name = 'root', $contenttype = true, $start = true, $expected = '') { // \n is important, you should not remove it. if (!is_array($array)) { return $array; } + //var_dump($expected); + //var_dump($name); + //var_dump($start); + if (strpos($expected, 'tns:') !== false) { + //echo "expected:"; + //var_dump($expected); + $complex = $this->findComplexByName(str_replace('tns:', '', $expected)); + //echo "complex:"; + //var_dump($complex); + } else { + //echo "nexpected:"; + //var_dump($expected); + $complex = null; + } $xmlstr = ''; if ($start) { if ($contenttype) { - @header('content-type:text/xml;charset=' . $this->encoding); + @header("content-type:text/xml;charset={$this->encoding}"); } - $xmlstr .= 'encoding . "\"?>\n"; - $xmlstr .= '<' . $name . ">\n"; + $xmlstr .= "encoding}\"?>\n"; + $xmlstr .= "<{$name}>\n"; } foreach ($array as $key => $child) { if (is_array($child)) { - $xmlstr .= (is_string($key)) ? '<' . $key . ">\n" : '<' . $keyx . ">\n"; - $child = $this->array2xml($child, '', '', false, $key); + $xmlstr .= "<{$key}>\n"; + if (strpos($complex[$key]['type'], 'tns:ArrayOf') === 0) { + $child = $this->array2xmlList($child, $complex[$key]['type']); + } else { + $child = $this->array2xml($child, '', '', false, $complex[$key]['type']); + } + $xmlstr .= $child; - $xmlstr .= (is_string($key)) ? '\n" : '\n"; + $xmlstr .= "\n"; } else { $type = $this->array2xmltype($child); if ($this->variable_type === 'object' && is_object($child)) { @@ -818,6 +1025,32 @@ public function array2xml($array, $name = 'root', $contenttype = true, $start = return $xmlstr; } + /** @noinspection LoopWhichDoesNotLoopInspection */ + private function array_key_first($arr) { + foreach ($arr as $key => $unused) { + return $key; + } + return null; + } + + public function array2xmlList($array, $expected = '') { + // \n is important, you should not remove it. + if (!is_array($array)) { + return $array; + } + $xmlstr = ''; + $keyName = str_replace('tns:', '', $expected); + $complex = $this->findComplexByName($keyName); + $firstKey = $this->array_key_first($complex); + //var_dump('list'); + //var_dump($complex); + foreach ($array as $idx => $value) { + $xmlstr .= "<$firstKey>" . $this->array2xml($value, '', '', false, $complex[$firstKey]['type']) + . "\n"; + } + return $xmlstr; + } + public function array2xmltype($value) { if (is_float($value)) { return 'float'; @@ -849,10 +1082,18 @@ private function fixarray2xml($string) { return $resultado; } - private function requestNOSOAP($function_name, $function_out, $methodcalled, $isget, $info = array()) { - global $param, $r; - - + /** + * Process a non-soap request into an array. + * + * @param string $functionName the name of the function + * @param string $functionTypeOut =['json','xml','php','none'][$i] + * @param string $methodcalled =['soap','wsdl','json','rest','php','xml','none'][$i] + * @param string $isget + * @param array $body + * + * @return false|string + */ + private function requestNoSOAP($functionName, $functionTypeOut, $methodcalled, $isget, $body = array()) { $this->wsse_username = @$_POST['Username']; $this->wsse_password = @$_POST['Password']; $this->wsse_nonce = @$_POST['Nonce']; @@ -866,96 +1107,59 @@ private function requestNOSOAP($function_name, $function_out, $methodcalled, $is } else { $this->wsse_password_type = 'None'; } - // pasar los parametros - $param = array(); - $paramt = ''; - - $indice_operation = -1; - foreach ($this->operation as $key => $value) { - if ($value['name'] == $function_name) { - $indice_operation = $key; - } - } - $operation = array('in' => array()); - if ($indice_operation >= 0) { - $i = 0; - $operation = $this->operation[$indice_operation]; - foreach ($operation['in'] as $key => $value) { - $tmpvalue = ($isget) ? @$_GET[$value['name']] : @$_POST[$value['name']]; - if ($methodcalled === 'rest') { - $param[] = @$info[$i + 3]; + $operationN = $this->findOperationByName($functionName); + if ($operationN != false) { + $operation = $operationN; + if ($isget) { + $param = $_GET; + } else { + $param = $this->decodeNOSOAP($methodcalled, $body); + } + // order and filter the arguments. + $arguments = []; + $argumentCounter = 0; + $paramxArgument = []; + foreach ($operation['in'] as $nameArg => $value) { + if (isset($param[$nameArg])) { + $arguments[$argumentCounter] = $param[$nameArg]; + + $paramxArgument[$nameArg] = $argumentCounter; + $argumentCounter++; } else { - $param[] = $this->decodeNOSOAP($methodcalled, $tmpvalue); - } - $paramt .= '@$param[' . $i . '],'; - $i++; - } - if ($this->variable_type === 'object') { - // convert all parameters in classes. - foreach ($param as $key => $value) { - $classname = $operation['in'][$key]['type']; - if (strpos($classname, 'tns:', 0) !== false) { - $param[$key] = $this->array2class($value, $this->fixtag($classname)); - } + $arguments[$argumentCounter] = null; + $paramxArgument[$nameArg] = $argumentCounter; + $argumentCounter++; } } - // $param_count = count($param); - $paramt = substr($paramt, 0, -1); - $r = ''; - if (!$this->serviceInstance) { - $evalstr = "\$r=$function_name($paramt);"; - } else { - //@eval("global \$" . $this->serviceInstance . ";"); - $evalstr = "\$r=\$this->serviceInstance->$function_name($paramt);"; - + try { + $er = $this->serviceInstance->$functionName(...$arguments); + } catch (RuntimeException $ex) { + return $this->returnErrorNoSOAP($functionTypeOut, 'Caught exception: ' . $ex->getMessage(), + 'Caught exception: ' . $ex->getMessage(), 'Server'); } - - $evalret = eval($evalstr); - - if ($this->variable_type === 'object') { - - - $r = $this->class2array($r, $this->fixtag($operation['out'][0]['type'])); - + $evalret = null; + if (count($operation['out'])) { + $returnArgName = $operation['out']['name']; + $evalret[$returnArgName] = $er; } - } else { - $evalret = array('soap:Fault' => 'Caught exception: function not defined'); - } - - $max_result = array(); - - - $max_result[$function_name . 'Result'] = $r; - - // agregamos si tiene valor byref. - //$extrabyref = ""; - $indice = 0; - - foreach ($operation['in'] as $key2 => $value2) { - if (@$value2['byref']) { - $paramtmp = @$param[$indice]; - $max_result[$value2['name']] = $paramtmp; - // $extrabyref .= $value2['name'] . "=" . $paramtmp . "\n"; + foreach ($operation['in'] as $nameArg => $value) { + if (isset($paramxArgument[$nameArg]) && $value['byref']) { + $evalret[$nameArg] = $arguments[$paramxArgument[$nameArg]]; + } else { + $evalret[$nameArg] = null; + } } - $indice++; - } - - if (count($max_result) === 1) { - - $max_result = $r; // if not byref then we returned as a single value - } - - if ($evalret !== false) { - - $resultado = $max_result; } else { - $resultado = $r; + return $this->returnErrorNoSOAP($functionTypeOut, 'Caught exception: function not defined' + , 'Caught exception: function not defined', 'Server'); } + return $this->encodeNOSOAP($functionTypeOut, $evalret, $functionName . 'Result'); + } - - $resultado = $this->encodeNOSOAP($function_out, $resultado, $function_name . 'Result'); - return $resultado; + private function returnErrorNoSOAP($methodcalled, $reason, $message, $code) { + return $this->decodeNOSOAP($methodcalled, + ['origin' => 'Cloudking Error', 'reason' => $reason, 'message' => $message, 'code' => $code]); } private function decodeNOSOAP($methodcalled, $tmpvalue) { @@ -963,7 +1167,7 @@ private function decodeNOSOAP($methodcalled, $tmpvalue) { $tmp = ''; switch ($methodcalled) { case 'json': - $tmp = json_decode($tmpvalue,false); + $tmp = json_decode($tmpvalue, true); break; case 'xml': $this->xml2array($tmpvalue); @@ -981,16 +1185,17 @@ private function decodeNOSOAP($methodcalled, $tmpvalue) { return $tmp; } - private function encodeNOSOAP($methodcalled, $tmpvalue, $tmpname) { + private function encodeNOSOAP($functionTypeOut, $tmpvalue, $tmpname) { $tmp = ''; - switch ($methodcalled) { + switch ($functionTypeOut) { case 'json': + @header('Content-type: application/json'); $tmp = json_encode($tmpvalue); break; case 'xml': if (!is_array($tmpvalue)) { @header('content-type:text/xml;charset=' . $this->encoding); - $tmp = '<' . '?' . 'xml version="1.0" encoding="' . $this->encoding . '"' . '?' . '>' . "\n"; + $tmp = "encoding}\"?>\n"; $tmp .= "<$tmpname>$tmpvalue"; } else { $tmp = $this->array2xml($tmpvalue, 'array', true, true); @@ -1016,79 +1221,138 @@ private function encodeNOSOAP($methodcalled, $tmpvalue, $tmpname) { return $tmp; } - protected function genphp() { - - $r=<<nameSpace); + $namespacephp = rtrim($namespacephp, '\\'); + if ($interface) { + $r = <<nameWebService}Service + */ +interface I{$this->nameWebService}Service { +cin; + } else { + $r = <<nameWebService}Service.php /** * @generated The structure of this class is generated by CloudKing - * Class {$this->NAME_WS}Service + * Class {$this->nameWebService}Service */ -class {$this->NAME_WS}Service { +class {$this->nameWebService}Service implements I{$this->nameWebService}Service { cin; + } - - foreach ($this->operation as $key => $value) { + foreach ($this->operation as $complexName => $args) { $param = ''; - foreach ($value['in'] as $key2 => $value2) { + foreach ($args['in'] as $key2 => $value2) { $param .= ($value2['byref']) ? '&' : ''; - $param .= '$' . $value2['name'] . ', '; - + $param .= '$' . $key2 . ', '; } if ($param != '') { $param = $this->right($param, 2); } - $r .= "\n"; - $r .= "\tpublic function " . $value['name'] . "($param) {\n"; - $r .= "\t\ttry {\n"; + $phpdoc = "\t/**\n\t * {$args['description']}\n\t *\n"; + foreach ($args['in'] as $key2 => $value2) { + $phpdoc .= "\t * @param mixed \${$key2}\n"; + } + if (is_array($args['out']) && count($args['out']) > 0) { + $phpdoc .= "\t *\n\t * @return mixed\n"; + } + $phpdoc .= "\t */"; + if ($interface) { + $r .= "\n$phpdoc\n"; + $r .= "\tpublic function {$complexName}($param);\n"; + } else { + $r .= "\n"; + $r .= "\n\t/**\n\t * @inheritDoc\n\t */\n"; + $r .= "\tpublic function {$complexName}($param) {\n"; + $r .= "\t\t// todo:custom implementation goes here\n"; + $r .= "\t}\n"; + } - $r .= "\t\t\t// todo: missing implementation \n"; - $r .= "\t\t\t/*\n"; - $param = ''; - foreach ($value['in'] as $key2 => $value2) { - $param .= "\t\t\t\$_" . $value2['name'] . '=' . - $this->Param2PHPValue($value2['type'], $value2['maxOccurs']) . ";\n"; + } + foreach ($this->complextype as $complexName => $args) { + $params = ''; + foreach ($args as $key2 => $value2) { + $params .= '$' . $key2 . '=null, '; } + if ($params != '') { + $params = $this->right($params, 2); + } + if ($interface) { + $r .= "\n\tpublic static function factory" . $complexName . '(' . $params . ");\n"; + } else { + $r .= "\n\tpublic static function factory" . $complexName . '(' . $params . ') {'; + $r .= "\n"; + $r .= $this->Param2PHP('tns:' . $complexName, @$args['maxOccurs']) . "\n"; + $r .= "\t\treturn \$_$complexName;\n"; + $r .= "\t}\n"; + } + } + $r .= "} // end class \n "; - $r .= $param; - $r .= "\t\t\t*/\n"; - $r .= "\t\t\t// End Input Values \n"; - foreach ($value['out'] as $key2 => $value2) { - $r .= "\t\t\t\$_" . $value['name'] . 'Result=' . - $this->Param2PHPValue($value2['type'], $value2['maxOccurs']) . ";\n"; + /*$r .= "\n" . $this->genphpast('Complex Types (Classes)'); + foreach ($this->complextype as $complexName => $args) { + $r .= "\nclass " . $complexName . " {\n"; + foreach ($args as $key2 => $value2) { + $r .= "\tvar $" . $key2 . '; // ' . $value2['type'] . "\n"; } - foreach ($value['out'] as $key2 => $value2) { + $r .= "}\n"; + } + */ + return $r; + } - $param .= $this->Param2PHPvalue($value2['type'], $value2['maxOccurs']); + private function createArgument($argArray) { + $param = ''; + foreach ($argArray as $key2 => $value2) { + $param .= ($value2['byref']) ? '&' : ''; + $param .= '$' . $key2 . ', '; + } + if ($param != '') { + $param = $this->right($param, 2); + } + return $param; + } - } - //$r.="\t\t \$result=\$_".$value['name']."Result ".$param."; \n"; - $r .= "\t\t\t return \$_" . $value['name'] . "Result; \n"; - $r .= "\t\t} catch (Exception \$_exception) {\n"; - $r .= "\t\t\treturn(array(\"soap:Fault\"=>'Caught exception: '. \$_exception->getMessage()));\n"; - $r .= "\t\t}\n"; - $r .= "\t}\n"; + protected function generateServiceInterface() { + + $r = <<nameWebService}Service + */ +interface I{$this->nameWebService}Service { +cin; + + foreach ($this->operation as $complexName => $args) { + $param = $this->createArgument($args['in']); + $r .= "\n"; + $r .= "\tpublic function " . $complexName . "($param);\n"; } - foreach ($this->complextype as $key => $value) { - - - $r.="\n\tpublic function factory".$value['name']. '(' - .$this->Param2PHPArg('tns:' . $value['name'], @$value['maxOccurs'],','). ') {'; + foreach ($this->complextype as $complexName => $args) { + $params = count($args) > 0 ? '$' . implode(',$', array_keys($args)) : ''; + + $r .= "\n\tpublic static function factory" . $complexName . '(' . $params . ') {'; $r .= "\n"; - $r .= $this->Param2PHP('tns:' . $value['name'], @$value['maxOccurs']) . "\n"; - $r.="\n\t }\n"; + $r .= $this->Param2PHP('tns:' . $complexName, @$args['maxOccurs']) . "\n"; + $r .= "\t\treturn \$_$complexName;\n"; + $r .= "\t}\n"; } $r .= "} // end class \n "; $r .= "\n" . $this->genphpast('Complex Types (Classes)'); - foreach ($this->complextype as $key => $value) { - $r .= "\nclass " . $value['name'] . " {\n"; - foreach ($value['elements'] as $key2 => $value2) { - $r .= "\tvar $" . $value2['name'] . '; // ' . $value2['type'] . "\n"; + foreach ($this->complextype as $complexName => $args) { + $r .= "\nclass " . $complexName . " {\n"; + foreach ($args as $key2 => $value2) { + $r .= "\tvar $" . $key2 . '; // ' . $value2['type'] . "\n"; } $r .= "}\n"; } - - + return $r; } @@ -1107,11 +1371,11 @@ protected function right($string, $num_cut = 1) { } protected function Param2PHPvalue($type, $max) { - $x1 = explode(':', $type,2); + $x1 = explode(':', $type, 2); if (count($x1) != 2) { return "// type $type not defined "; } - list($space,$name)=$x1; + list($space, $name) = $x1; $p = ''; if ($space === 's') { if (!in_array($name, $this->predef_types)) { @@ -1125,8 +1389,8 @@ protected function Param2PHPvalue($type, $max) { } } if ($space === 'tns') { - foreach ($this->complextype as $key => $value) { - if ($name == $value['name']) { + foreach ($this->complextype as $complexName => $args) { + if ($name === $complexName) { $p = '$_' . $name; } } @@ -1152,12 +1416,12 @@ protected function Param2PHPvalue($type, $max) { return "\\ complex type $type not defined"; } - protected function Param2PHP($type, $max, $separator=";\n",$pre="\t\t") { - $x1 = explode(':', $type,2); + protected function Param2PHP($type, $max, $separator = ";\n", $pre = "\t\t") { + $x1 = explode(':', $type, 2); if (count($x1) != 2) { return "// type $type not defined "; } - list($space,$name)=$x1; + list($space, $name) = $x1; if ($space === 's') { if (!in_array($name, $this->predef_types)) { return "// type $type not found"; @@ -1178,12 +1442,12 @@ protected function Param2PHP($type, $max, $separator=";\n",$pre="\t\t") { } $resultado = ''; if ($space === 'tns') { - foreach ($this->complextype as $key => $value) { - if ($name == $value['name']) { + foreach ($this->complextype as $complexName => $args) { + if ($name == $complexName) { - foreach ($value['elements'] as $key2 => $value2) { - $resultado .= $pre. '$_' . $name . "['" . $value2['name'] . "']=$" . - $value2['name'] . $separator; + foreach ($args as $key2 => $value2) { + $resultado .= $pre . '$_' . $name . "['" . $key2 . "']=$" . + $key2 . $separator; //$resultado.="'".$value2['name']."'=>".$this->Param2PHP($value2['type'],$value2['maxOccurs']).","; } $resultado = $this->right($resultado); @@ -1194,12 +1458,13 @@ protected function Param2PHP($type, $max, $separator=";\n",$pre="\t\t") { } return ''; } - protected function Param2PHPArg($type, $max, $separator=";\n") { - $x1 = explode(':', $type,2); + + protected function Param2PHPArg($type, $max) { + $x1 = explode(':', $type, 2); if (count($x1) != 2) { return "// type $type not defined "; } - list($space,$name)=$x1; + list($space, $name) = $x1; if ($space === 's') { if (!in_array($name, $this->predef_types)) { return "// type $type not found"; @@ -1220,12 +1485,12 @@ protected function Param2PHPArg($type, $max, $separator=";\n") { } $resultado = ''; if ($space === 'tns') { - foreach ($this->complextype as $key => $value) { - if ($name == $value['name']) { + foreach ($this->complextype as $complexName => $args) { + if ($name === $complexName) { - foreach ($value['elements'] as $key2 => $value2) { - $resultado .= '$' . $value2['name'] . '=' . - $this->Param2PHPValue($value2['type'], $value2['maxOccurs']) . $separator; + foreach ($args as $key2 => $value2) { + $resultado .= '$' . $key2; // . '=' . + // $this->Param2PHPValue($value2['type'], $value2['maxOccurs']) . $separator; //$resultado.="'".$value2['name']."'=>".$this->Param2PHP($value2['type'],$value2['maxOccurs']).","; } $resultado = $this->right($resultado); @@ -1238,28 +1503,32 @@ protected function Param2PHPArg($type, $max, $separator=";\n") { } /** - * @param float $soap The default SOAP. * * @return string */ - protected function genphpclient($soap=1.1) { - $namespacephp=str_replace(['http://','https://','.'],['','','\\'],$this->NAMESPACE); + protected function genphpclient() { + $namespacephp = str_replace(['http://', 'https://', '.','/'], ['', '', '\\','\\'], $this->nameSpace); + $namespacephp=trim($namespacephp,'\\'); $r = "NAME_WS}Client
\n"; + $r .= " * Class {$this->nameWebService}Client
\n"; if ($this->description) { $r .= " * {$this->description}
\n"; } - $r .= " * This code was generated automatically using CloudKing v{$this->version}, Date:".date('r')."
\n"; - $r .= ' * Using the web:' .$this->FILE."?source=phpclient\n"; + $r .= " * This code was generated automatically using CloudKing v{$this->version}, Date:" . date('r') + . "
\n"; + $r .= ' * Using the web:' . $this->portUrl . "?source=phpclient\n"; $r .= " */\n"; - $r .= "class {$this->NAME_WS}Client {\n"; + $r .= "class {$this->nameWebService}Client {\n"; $r .= "\t/** @var string The full url where is the web service */\n"; - $r .= "\tprotected \$url='" . $this->FILE . "';\n"; + $r .= "\tprotected \$url='" . $this->portUrl . "';\n"; $r .= "\t/** @var string The namespace of the web service */\n"; - $r .= "\tprotected \$tempuri='" . $this->NAMESPACE . "';\n"; + $r .= "\tprotected \$tempuri='" . $this->nameSpace . "';\n"; $r .= "\t/** @var string The last error. It is cleaned per call */\n"; $r .= "\tpublic \$lastError='';\n"; $r .= "\t/** @var float=[1.1,1.2][\$i] The SOAP used by default */\n"; @@ -1280,37 +1549,36 @@ protected function genphpclient($soap=1.1) { $r .= "\t\t\$soap!==null and \$this->soap = \$soap;\n"; $r .= "\t\t\$this->service=new CloudKingClient(\$this->soap,\$this->tempuri);\n"; $r .= "\t}\n\n"; - - + foreach ($this->operation as $key => $value) { - $functionname = $value['name']; - if (isset($value['out'])) { - $outType=$value['out'][0]['type']; + $functionname = $key; + if (isset($value['out']) && count($value['out']) > 0) { + $outType = $value['out']['type']; } else { - $outType='void'; + $outType = 'void'; } $param = ''; foreach ($value['in'] as $key2 => $value2) { $param .= ($value2['byref']) ? '&' : ''; - $param .= '$' . $value2['name'] . ', '; + $param .= '$' . $key2 . ', '; } if ($param != '') { $param = $this->right($param, 2); } - $r.="\n\t/**\n"; - $r.="\t * ".@$value['description']."\n"; - $r.="\t *\n"; + $r .= "\n\t/**\n"; + $r .= "\t * " . @$value['description'] . "\n"; + $r .= "\t *\n"; foreach ($value['in'] as $key2 => $value2) { - $varname = $value2['name']; - $r .= "\t * @param mixed \$$varname " . @$value2['description'] . ' ('.@$value2['type'].") \n"; + $varname = $key2; + $r .= "\t * @param mixed \$$varname " . @$value2['description'] . ' (' . @$value2['type'] . ") \n"; } - $r .= "\t * @return mixed ($outType)\n"; - $r .= "\t * @noinspection PhpUnused */\n"; + $r .= "\t * @return mixed ($outType)\n"; + $r .= "\t * @noinspection PhpUnused */\n"; $r .= "\tpublic function $functionname($param) {\n"; $r .= "\t\t\$_param='';\n"; foreach ($value['in'] as $key2 => $value2) { - $varname = $value2['name']; + $varname = $key2; $r .= "\t\t\$_param.=\$this->service->array2xml(\$$varname,'ts:$varname',false,false);\n"; } $r .= "\t\t\$resultado=\$this->service->loadurl(\$this->url,\$_param,'$functionname');\n"; @@ -1320,14 +1588,14 @@ protected function genphpclient($soap=1.1) { $r .= "\t\t}\n"; foreach ($value['in'] as $key2 => $value2) { if ($value2['byref']) { - $r .= "\t\t\$" . $value2['name'] . "=@\$resultado['" . $value2['name'] . "'];\n"; + $r .= "\t\t\$" . $key2 . "=@\$resultado['" . $key2 . "'];\n"; } } $r .= "\t\treturn @\$resultado['" . $functionname . "Result'];\n"; $r .= "\t}\n"; } - $r .= "} // end {$this->NAME_WS}Client\n"; + $r .= "} // end {$this->nameWebService}Client\n"; return $r; } @@ -1343,25 +1611,26 @@ protected function genunitycsharp() { using System.Collections; using System.Collections.Generic; -public class ' . $this->NAME_WS . ' : MonoBehaviour +public class ' . $this->nameWebService . ' : MonoBehaviour { // Use this for initialization private string charset = "UTF-8"; - private string url = "' . $this->FILE . '"; - private string tempuri = "' . $this->NAMESPACE . '"; + private string url = "' . $this->portUrl . '"; + private string tempuri = "' . $this->nameSpace . '"; private string prefixns = "ts"; public string cookie=""; '; - foreach ($this->operation as $key => $value) { - $tmpname = $value['name']; - if (count($value['out']) >= 1) { - $outtype = $this->fixtag($value['out'][0]['type']); - $outtypereal = $this->type2csharp($outtype); - } else { - $outtypereal = ''; - } - $r .= ' + foreach ($this->operation as $complexName => $args) { + foreach ($args as $argname => $v) { + $tmpname = $argname; + if (isset($value['out']) && count($v['out']) >= 1) { + $outtype = $this->fixtag($v['out']['type']); + $outtypereal = $this->type2csharp($outtype); + } else { + $outtypereal = ''; + } + $r .= ' // ' . $tmpname . ' public Boolean is' . $tmpname . 'Running = false; private WWW webservice' . $tmpname . '; @@ -1370,44 +1639,45 @@ protected function genunitycsharp() { public ' . $outtypereal . ' ' . $tmpname . 'Result; // End ' . $tmpname . ' '; + } } $r .= ' private void Start() { return; }'; - foreach ($this->operation as $key => $value) { - $tmpname = $value['name']; - $param = ''; - foreach ($value['in'] as $key2 => $value2) { - $param .= $this->fixtag($value2['type']) . ' ' . $value2['name'] . ','; - } - $param = $this->right($param, 1); - $r .= ' + foreach ($this->operation as $complexName => $args) { + foreach ($args as $argname => $v) { + $tmpname = $argname; + $param = ''; + foreach ($v['in'] as $key2 => $value2) { + $param .= $this->fixtag($value2['type']) . ' ' . $key2 . ','; + } + $param = $this->right($param, 1); + $r .= ' private void ' . $tmpname . 'Async(' . $param . ') { string namefunction = "' . $tmpname . '"; Single soapVersion=1.1f; string ss2 = SoapHeader(namefunction,soapVersion);'; - foreach ($value['in'] as $key2 => $value2) { - $name = $value2['name']; - $r .= ' + foreach ($v['in'] as $key2 => $value2) { + $name = $key2; + $r .= ' ss2 += "<" + prefixns + ":' . $name . '>" + Obj2XML(' . $name . ',true) + ""; '; - } - - if (count($value['out']) >= 1) { - $outtype = $this->fixtag($value['out'][0]['type']); - $outtypereal = $this->type2csharp($outtype); - $outinit = $this->csharp_init($outtype); - } else { - $outtype = ''; - $outtypereal = ''; - $outinit = ''; - } + } + if (isset($value['out']) && count($v['out']) >= 1) { + $outtype = $this->fixtag($v['out']['type']); + $outtypereal = $this->type2csharp($outtype); + $outinit = $this->csharp_init($outtype); + } else { + $outtype = ''; + $outtypereal = ''; + $outinit = ''; + } - $r .= 'ss2 += SoapFooter(namefunction,soapVersion); + $r .= 'ss2 += SoapFooter(namefunction,soapVersion); is' . $tmpname . 'Running = true; StartCoroutine(' . $tmpname . 'Async2(ss2)); } @@ -1426,25 +1696,27 @@ protected function genunitycsharp() { is' . $tmpname . 'Running = false; string other = cleanSOAPAnswer(webservice' . $tmpname . '.text, "' . $tmpname . '",ref ' . $tmpname . 'Error); '; - if ($outtype != '') { - $r .= $tmpname . 'Result=' . $outinit . ";\n"; - $r .= ' ' . $tmpname . 'Result=(' . $outtypereal . ')XML2Obj(other,"' . $outtype . '",' . - $tmpname . 'Result.GetType()); + if ($outtype != '') { + $r .= $tmpname . 'Result=' . $outinit . ";\n"; + $r .= ' ' . $tmpname . 'Result=(' . $outtypereal . ')XML2Obj(other,"' . $outtype + . '",' . + $tmpname . 'Result.GetType()); '; - } - $r .= 'webservice' . $tmpname . '.responseHeaders.TryGetValue("SET-COOKIE",out cookie); + } + $r .= 'webservice' . $tmpname . '.responseHeaders.TryGetValue("SET-COOKIE",out cookie); '; - $r .= $tmpname . 'AsyncDone(); + $r .= $tmpname . 'AsyncDone(); } public void ' . $tmpname . 'AsyncDone() { // we do something...'; - if ($outtype != '') { - $r .= ' + if ($outtype != '') { + $r .= ' // ' . $outtypereal . ' dnx=' . $tmpname . 'Result;'; - } - $r .= ' + } + $r .= ' } '; + } } $r .= ' @@ -1598,29 +1870,26 @@ protected function genunitycsharp() { '; $r .= "\n" . $this->genphpast('Complex Types (Classes)'); - foreach ($this->complextype as $key => $value) { - $type = $this->fixtag(@$value['type']); - + foreach ($this->complextype as $complexName => $args) { + $type = $this->fixtag(@$args['type']); - if (strlen($value['name']) <= 7 || strpos($value['name'], 'ArrayOf') === 0) { - $r .= "\npublic class " . $value['name'] . " {\n"; - foreach ($value['elements'] as $key2 => $value2) { - $r .= "\tprivate " . $type . ' _' . $value2['name'] . "; \n"; + if (strlen($complexName) <= 7 || strpos($complexName, 'ArrayOf') === 0) { + $r .= "\npublic class " . $complexName . " {\n"; + foreach ($args as $key2 => $value2) { + $r .= "\tprivate " . $type . ' _' . $key2 . "; \n"; } $r .= "\n"; - foreach ($value['elements'] as $key2 => $value2) { - $r .= "\tpublic " . $type . ' ' . $value2['name'] . "\n"; + foreach ($args as $key2 => $value2) { + $r .= "\tpublic {$type} {$key2}\n"; $r .= "\t{\n"; - $r .= "\t\tget { return _" . $value2['name'] . "; }\n"; - $r .= "\t\tset { _" . $value2['name'] . " = value; }\n"; + $r .= "\t\tget { return _{$key2}; }\n"; + $r .= "\t\tset { _{$key2} = value; }\n"; $r .= "\t}\n"; } - $r .= "}\n"; } } - return ($r); } @@ -1656,9 +1925,13 @@ protected function csharp_init($type) { protected function source() { $result = $this->html_header(); $result .= '

List of Operations

'; $result .= $this->html_footer(); @@ -1667,7 +1940,7 @@ protected function source() { protected function html_header() { $r = '
'; - $r .= '' . $this->NAME_WS . "\n"; + $r .= '' . $this->nameWebService . "\n"; $r .= "