111 lines
3.1 KiB
PHP
111 lines
3.1 KiB
PHP
<?php
|
|
ini_set("soap.wsdl_cache_enabled", "0");
|
|
|
|
class ServiceController extends Zend_Controller_Action
|
|
{
|
|
private $wsdlName = 'WsEntreprise';
|
|
private $wsdlVersion = '0.1';
|
|
|
|
public function init()
|
|
{
|
|
$this->_helper->viewRenderer->setNoRender();
|
|
}
|
|
|
|
public function indexAction()
|
|
{
|
|
// action body
|
|
require_once 'Zend/Exception.php';
|
|
require_once 'Zend/Soap/AutoDiscover.php';
|
|
require_once 'Zend/Soap/Server.php';
|
|
require_once 'WsScore/WsEntreprise.php';
|
|
require_once 'WsScore/WrappedServiceProxy.php';
|
|
|
|
$fichierWsdl = $this->wsdlName.'-'.$this->wsdlVersion.'.wsdl';
|
|
|
|
// Fourniture du wsdl
|
|
if (isset($_GET['wsdl'])){
|
|
if (file_exists($fichierWsdl)){
|
|
if (!headers_sent()) {
|
|
header('Content-Type: text/xml');
|
|
}
|
|
echo file_get_contents($fichierWsdl);
|
|
} else {
|
|
echo "Erreur WSDL inexistant !";
|
|
}
|
|
|
|
// Génération du wsdl
|
|
} elseif ( isset($_GET['wsdl-generate']) || isset($_GET['wsdl-auto']) ){
|
|
|
|
// Définition du webservice
|
|
$wsdl = new Zend_Soap_AutoDiscover();
|
|
$wsdl->setOperationBodyStyle( array('use' => 'literal') );
|
|
$wsdl->setBindingStyle( array('style' => 'document') );
|
|
// Inspecte la classe retourner la description
|
|
$wsdl->setClass('WsEntreprise');
|
|
|
|
// Enregistrement du WSDL dans un fichier
|
|
if ( isset($_GET['wsdl-generate']) ){
|
|
if (!file_exists($fichierWsdl)){
|
|
$wsdl->dump($fichierWsdl);
|
|
echo "Le fichier $fichierWsdl a été généré";
|
|
} else {
|
|
// @todo envové un mail en mode production
|
|
echo "ERREUR : Le fichier $fichierWsdl est déjà présent !";
|
|
}
|
|
// Envoi sur la sortie standard le wsdl
|
|
} elseif ( isset($_GET['wsdl-auto']) ) {
|
|
$wsdl->handle();
|
|
}
|
|
|
|
// Fourniture du service
|
|
} else {
|
|
|
|
$webservicesConfig = new Zend_Config_Ini(APPLICATION_PATH .
|
|
'/configs/webservices.ini', APPLICATION_ENV);
|
|
Zend_Registry::set('webservicesConfig',$webservicesConfig);
|
|
|
|
$classmap = array(
|
|
'IdentiteReturnType' => 'IdentiteReturnType',
|
|
'IdentiteResultType' => 'IdentiteResultType',
|
|
'GeoInfos' => 'GeoInfos',
|
|
'IdentiteBilan' => 'IdentiteBilan',
|
|
'IdentiteBourse' => 'IdentiteBourse',
|
|
|
|
'ErrorType' => 'ErrorType',
|
|
|
|
'StatusResultType' => 'StatusResultType',
|
|
);
|
|
|
|
//Gérer les authentifications
|
|
//Renvoyer une erreur soap
|
|
|
|
// traitement
|
|
try {
|
|
if (APPLICATION_ENV == 'production') {
|
|
// @todo Vérifier la présence du fichier sinon envoyer erreur
|
|
$server = new Zend_Soap_Server($fichierWsdl);
|
|
} else {
|
|
$hostName = $this->getRequest()->getHttpHost();
|
|
$server = new Zend_Soap_Server('http://'.$hostName.'/service?wsdl-auto');
|
|
}
|
|
$proxy = new WrappedService_Proxy('WsEntreprise', array(), array('wrappedParts' => true));
|
|
$server->setObject($proxy);
|
|
$server->setClassmap($classmap);
|
|
$server->handle();
|
|
} catch (Zend_Exception $e) {
|
|
//Enregistrement des erreurs
|
|
/*
|
|
* $e->getMessage()
|
|
* $e->getCode()
|
|
* $e->getFile()
|
|
* $e->getLine()
|
|
*/
|
|
}
|
|
}
|
|
exit;
|
|
}
|
|
|
|
|
|
}
|
|
|