Subversion Repositories eFlore/Applications.del

Rev

Rev 3 | Blame | Last modification | View Log | RSS feed

<?php
/**
 * Service Exemple pour apprendre à utiliser les classes JRest
 * Encodage en entrée : utf8
 * Encodage en sortie : utf8
 *
 * @author Aurélien PERONNET <aurelien@tela-botanica.org>
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
 * @version $Id$
 */
class ExempleService extends Del {
        
        /**
        * Méthode appelée avec une requête de type GET avec une url de la forme 
        * http://localhost/jrest/ExempleService/
        * 
        * Sert normalement à renvoyer la description des possibilités du service
        * 
        */
        public function getRessource() {
                $chaine = '<div>'.
                                        '<p> Bonjour, je suis un service web </p>'.
                                        '<p> Vous pouvez m\'appeler avec les méthodes GET, POST, PUT et DELETE </p>'.          
                                  '</div>';

                $this->envoyer($chaine);
        }
        
        /**
        * Méthode appelée avec une requête de type GET avec une url de la forme 
        * http://localhost/jrest/ExempleService/uid[0]/$uid[1]/ etc...
        * 
        * Sert normalement à ramener un élément précis indiqué par un identifiant
        * qui se situe dans l'url après le nom du service
        * Le filtrage, le format de retour, les paramètres optionnels ... sont normalement indiqués 
        * dans le tableau $_GET
        * Pour obtenir l'élément 2501 dans le format HTML cela pourrait donner 
        * http://localhost/jrest/ExempleService/2501?format=HTML
        * 
        * @param $uid un tableau contenant les élements passés dans l'url après le nom du service
        * 
        */
        public function getElement($uid)
        {
                $format = 'html';
                
                if(isset($_GET['format'])) {
                        $format = strtolower($_GET['format']);
                }       
                
                switch ($format) {
                        
                        case 'html':
                                $retour = '<div id="element_'.$uid[0].'">'.
                                                        '<p> Bonjour, je suis l\'élément '.$uid[0].' </p>'.
                                                        '<span> Les filtres demandés sont : </span>'.
                                                        '<ul>';
                                foreach($_GET as $cle => $valeur) {
                                        $retour .= '<li>'.$cle.' = '.$valeur.'</li>';
                                }       
                                $retour .= '</ul>'.             
                                                  '</div>';
                                
                                $mime = 'text/html';
                        break;
                        
                        case 'json':
                                $retour = array('id' => $uid[0],
                                                                'message' => 'Bonjour, je suis l\'élément '.$uid[0],
                                                                'filtres' => $_GET);
                                $retour = json_encode($retour);
                                $mime = 'application/json';
                        break;
                        
                        case 'xml':
                        
                                $retour = '<?xml version="1.0" encoding="utf-8"?>';
                                $retour .= '<element id="element_'.$uid[0].'"> '.
                                                        '<message> Bonjour, je suis l\'élément '.$uid[0].' </message>'.
                                                        '<filtres> Les filtres demandés sont : ';
                                foreach($_GET as $cle => $valeur) {
                                        $retour .= '<filtre>'.$cle.' = '.$valeur.'</filtre>';
                                }       
                                $retour .= '</filtres>'.                
                                                  '</element>';
                                
                                $mime = 'text/xml';
                        break;
                }

                $this->envoyer($retour,$mime);
        }
        
        /**
         * Méthode appelée avec une requête de type PUT, ou bien un POST sans identifiant après le nom
         * du service, donc une url de la forme :
         * http://localhost/jrest/ExempleService/ + du contenu dans le post
         * Cette méthode sert normalement a créer un nouvel élément avec les données fournies en post
         * 
         * @param array $pairs Un tableau contenant les valeurs passées dans le post qui permettront de créer l'élement
        */
        function createElement($pairs)
        {
                $chaine = '<div>'.
                                        '<p> Bonjour, vous venez de créer un nouvel élément </p>'.
                                        '<span> Les données suivantes ont été utilisées : </span>'.
                                        '<ul>';
                foreach($pairs as $cle => $valeur) {
                        $chaine .= '<li>'.$cle.' = '.$valeur.'</li>';
                }       
                $chaine .= '</ul>'.             
                                  '</div>';

                $this->envoyer($chaine);
        }

        /**
         * Méthode appelée avec une requête de type PUT, ou bien un POST avec un identifiant après le nom
         * du service, donc une url de la forme :
         * http://localhost/jrest/ExempleService/$uid[0] + du contenu dans le post
         * Cette méthode sert normalement a modifier un élément existant avec les données fournies 
         * en post
         * 
         * @param array $pairs Un tableau contenant les valeurs passées dans le post qui permettront 
         * de modifier l'élement indiqué par ce qui suit le nom du service dans l'url
        */
        public function updateElement($uid,$pairs)
        {
                $chaine = '<div>'.
                                        '<p> Bonjour, l\'élément '.$uid[0].' a été modifié </p>'.
                                        '<span> Les données suivantes ont été utilisées : </span>'.
                                        '<ul>';
                foreach($pairs as $cle => $valeur) {
                        $chaine .= '<li>'.$cle.' = '.$valeur.'</li>';
                }       
                $chaine .= '</ul>'.             
                                  '</div>';

                $this->envoyer($chaine);
        }

        /**
         * Méthode appelée avec une requête de type DELETE, en indiquant l'identifiant de l'élément à supprimer
         * ce qui donne une url de la forme :
         * http://localhost/jrest/ExempleService/$uid[0]
         * 
         * ATTENTION : Safari ne sais pas envoyer les DELETE donc on triche en faisant un post qui contient
         * action=DELETE (les majuscules sont importantes) 
         * On a donc http://localhost/jrest/ExempleService/$uid[0] + action=DELETE dans le post
         * 
         * @param $uid un tableau contenant les élements passés dans l'url après le nom du service
        */
        function deleteElement($uid){
                
                $chaine = '<div>'.
                                        '<p> Bonjour, l\'élément '.$uid[0].' a été supprimé </p>'. 
                                  '</div>';

                $this->envoyer($chaine);
        }
}
?>