Subversion Repositories eFlore/Applications.del

Rev

Rev 1 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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