Subversion Repositories eFlore/Applications.del

Rev

Rev 1 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 aurelien 1
<?php
2
/**
3
 * Service Exemple pour apprendre à utiliser les classes JRest
4
 * Encodage en entrée : utf8
5
 * Encodage en sortie : utf8
6
 *
7
 * @author Aurélien PERONNET <aurelien@tela-botanica.org>
8
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
9
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
10
 * @version $Id$
11
 */
12
class ExempleService extends Del {
13
 
14
	/**
15
	* Méthode appelée avec une requête de type GET avec une url de la forme
16
	* http://localhost/jrest/ExempleService/
17
	*
18
	* Sert normalement à renvoyer la description des possibilités du service
19
	*
20
	*/
21
	public function getRessource() {
22
		$chaine = '<div>'.
23
					'<p> Bonjour, je suis un service web </p>'.
24
					'<p> Vous pouvez m\'appeler avec les méthodes GET, POST, PUT et DELETE </p>'.
25
				  '</div>';
26
 
27
		$this->envoyer($chaine);
28
	}
29
 
30
	/**
31
	* Méthode appelée avec une requête de type GET avec une url de la forme
32
	* http://localhost/jrest/ExempleService/uid[0]/$uid[1]/ etc...
33
	*
34
	* Sert normalement à ramener un élément précis indiqué par un identifiant
35
	* qui se situe dans l'url après le nom du service
36
	* Le filtrage, le format de retour, les paramètres optionnels ... sont normalement indiqués
37
	* dans le tableau $_GET
38
	* Pour obtenir l'élément 2501 dans le format HTML cela pourrait donner
39
	* http://localhost/jrest/ExempleService/2501?format=HTML
40
	*
41
	* @param $uid un tableau contenant les élements passés dans l'url après le nom du service
42
	*
43
	*/
44
	public function getElement($uid)
3 aurelien 45
	{
46
		$format = 'html';
47
 
48
		if(isset($_GET['format'])) {
49
			$format = strtolower($_GET['format']);
50
		}
51
 
52
		switch ($format) {
53
 
54
			case 'html':
55
				$retour = '<div id="element_'.$uid[0].'">'.
56
							'<p> Bonjour, je suis l\'élément '.$uid[0].' </p>'.
57
							'<span> Les filtres demandés sont : </span>'.
58
							'<ul>';
59
				foreach($_GET as $cle => $valeur) {
60
					$retour .= '<li>'.$cle.' = '.$valeur.'</li>';
61
				}
62
				$retour .= '</ul>'.
63
						  '</div>';
64
 
65
				$mime = 'text/html';
66
			break;
67
 
68
			case 'json':
69
				$retour = array('id' => $uid[0],
70
								'message' => 'Bonjour, je suis l\'élément '.$uid[0],
71
								'filtres' => $_GET);
72
				$retour = json_encode($retour);
73
				$mime = 'application/json';
74
			break;
75
 
76
			case 'xml':
77
 
78
				$retour = '<?xml version="1.0" encoding="utf-8"?>';
79
				$retour .= '<element id="element_'.$uid[0].'"> '.
80
							'<message> Bonjour, je suis l\'élément '.$uid[0].' </message>'.
81
							'<filtres> Les filtres demandés sont : ';
82
				foreach($_GET as $cle => $valeur) {
83
					$retour .= '<filtre>'.$cle.' = '.$valeur.'</filtre>';
84
				}
85
				$retour .= '</filtres>'.
86
						  '</element>';
87
 
88
				$mime = 'text/xml';
89
			break;
90
		}
1 aurelien 91
 
3 aurelien 92
		$this->envoyer($retour,$mime);
1 aurelien 93
	}
94
 
95
	/**
96
	 * Méthode appelée avec une requête de type PUT, ou bien un POST sans identifiant après le nom
97
	 * du service, donc une url de la forme :
98
	 * http://localhost/jrest/ExempleService/ + du contenu dans le post
99
	 * Cette méthode sert normalement a créer un nouvel élément avec les données fournies en post
100
	 *
101
	 * @param array $pairs Un tableau contenant les valeurs passées dans le post qui permettront de créer l'élement
102
	*/
103
	function createElement($pairs)
104
	{
105
		$chaine = '<div>'.
106
					'<p> Bonjour, vous venez de créer un nouvel élément </p>'.
107
					'<span> Les données suivantes ont été utilisées : </span>'.
108
					'<ul>';
109
		foreach($pairs as $cle => $valeur) {
110
			$chaine .= '<li>'.$cle.' = '.$valeur.'</li>';
111
		}
112
		$chaine .= '</ul>'.
113
				  '</div>';
114
 
115
		$this->envoyer($chaine);
116
	}
117
 
118
	/**
119
	 * Méthode appelée avec une requête de type PUT, ou bien un POST avec un identifiant après le nom
120
	 * du service, donc une url de la forme :
121
	 * http://localhost/jrest/ExempleService/$uid[0] + du contenu dans le post
122
	 * Cette méthode sert normalement a modifier un élément existant avec les données fournies
123
	 * en post
124
	 *
125
	 * @param array $pairs Un tableau contenant les valeurs passées dans le post qui permettront
126
	 * de modifier l'élement indiqué par ce qui suit le nom du service dans l'url
127
	*/
128
	public function updateElement($uid,$pairs)
129
	{
130
		$chaine = '<div>'.
131
					'<p> Bonjour, l\'élément '.$uid[0].' a été modifié </p>'.
132
					'<span> Les données suivantes ont été utilisées : </span>'.
133
					'<ul>';
134
		foreach($pairs as $cle => $valeur) {
135
			$chaine .= '<li>'.$cle.' = '.$valeur.'</li>';
136
		}
137
		$chaine .= '</ul>'.
138
				  '</div>';
139
 
140
		$this->envoyer($chaine);
141
	}
142
 
143
	/**
144
	 * Méthode appelée avec une requête de type DELETE, en indiquant l'identifiant de l'élément à supprimer
145
	 * ce qui donne une url de la forme :
146
	 * http://localhost/jrest/ExempleService/$uid[0]
147
	 *
148
	 * ATTENTION : Safari ne sais pas envoyer les DELETE donc on triche en faisant un post qui contient
149
	 * action=DELETE (les majuscules sont importantes)
150
	 * On a donc http://localhost/jrest/ExempleService/$uid[0] + action=DELETE dans le post
151
	 *
152
	 * @param $uid un tableau contenant les élements passés dans l'url après le nom du service
153
	*/
154
	function deleteElement($uid){
155
 
156
		$chaine = '<div>'.
157
					'<p> Bonjour, l\'élément '.$uid[0].' a été supprimé </p>'.
158
				  '</div>';
159
 
160
		$this->envoyer($chaine);
161
	}
162
}
163
?>