Subversion Repositories Applications.framework

Rev

Rev 368 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 368 Rev 382
1
<?php
1
<?php
2
/**
2
/**
3
 * Classe principale gérant les services.
3
 * Classe principale gérant les services.
4
 * Paramètres liés dans config.ini :
4
 * Paramètres liés dans config.ini :
5
 *  - serveur.baseURL
5
 *  - serveur.baseURL
6
 * 
6
 * 
7
 * Encodage en entrée : utf8
7
 * Encodage en entrée : utf8
8
 * Encodage en sortie : utf8
8
 * Encodage en sortie : utf8
9
 * 
9
 * 
10
 * @category	Php 5.2
10
 * @category	Php 5.2
11
 * @package	Framework
11
 * @package	Framework
12
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
 * @copyright	Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
13
 * @copyright	Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
14
 * @license	GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
 * @license	GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
 * @license	CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
 * @license	CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
 * @since 		0.3
16
 * @since 		0.3
17
 * @version	$Id: RestService.php 368 2011-10-03 12:46:34Z jpm $
17
 * @version	$Id: RestService.php 382 2011-10-14 10:36:41Z jpm $
18
 * @link		/doc/framework/
18
 * @link		/doc/framework/
19
 */
19
 */
20
abstract class RestService {
20
abstract class RestService {
21
	
21
	
22
	/** Objet de connection à la base de données. 
22
	/** Objet de connection à la base de données. 
23
	 * @deprecated Utiliser la methode getBdd().
23
	 * @deprecated Utiliser la methode getBdd().
24
	 * @see getBdd()
24
	 * @see getBdd()
25
	 */
25
	 */
26
	protected $bdd = null;
26
	protected $bdd = null;
27
	
27
	
28
	/** Objet Rest Client. */
28
	/** Objet Rest Client. */
29
	private $RestClient = null;
29
	private $RestClient = null;
-
 
30
	
-
 
31
	/** Indique si oui (true) ou non (false), on veut utiliser les paramètres brutes. */
-
 
32
	protected $utilisationParametresBruts = false;
30
	
33
	
31
	public function __construct($config) {
34
	public function __construct($config) {
32
		$this->config = $config;
35
		$this->config = $config;
33
		$this->bdd = new Bdd();
36
		$this->bdd = new Bdd();
34
	}
37
	}
-
 
38
	
-
 
39
	public function initialiser() {
-
 
40
		
-
 
41
	}
35
	
42
	
36
	/** 
43
	/** 
37
	 * Méthode de connection à la base de données sur demande.
44
	 * Méthode de connection à la base de données sur demande.
38
	 * Tous les services web n'ont pas besoin de s'y connecter.
45
	 * Tous les services web n'ont pas besoin de s'y connecter.
39
	 */
46
	 */
40
	protected function getBdd() {
47
	protected function getBdd() {
41
		if (! isset($this->bdd)) {
48
		if (! isset($this->bdd)) {
42
			$this->bdd = new Bdd();
49
			$this->bdd = new Bdd();
43
		}
50
		}
44
		return $this->bdd;
51
		return $this->bdd;
45
	}
52
	}
46
	
53
	
47
	/** 
54
	/** 
48
	 * Méthode permettant de faire appel à un client REST en fonction des besoins du service.
55
	 * Méthode permettant de faire appel à un client REST en fonction des besoins du service.
49
	 */
56
	 */
50
	protected function getRestClient() {
57
	protected function getRestClient() {
51
		if (! isset($this->RestClient)) {
58
		if (! isset($this->RestClient)) {
52
			$this->RestClient = new RestClient();
59
			$this->RestClient = new RestClient();
53
		}
60
		}
54
		return $this->RestClient;
61
		return $this->RestClient;
55
	}
62
	}
-
 
63
	
-
 
64
	/** 
-
 
65
	 * Méthode permettant de savoir si le service veut utiliser des paramètres bruts (issu de la QueryString)
-
 
66
	 * ou pas (issu de $_GET).
-
 
67
	 */
-
 
68
	public function utiliserParametresBruts() {
-
 
69
		return $this->utilisationParametresBruts;
-
 
70
	}
56
	
71
	
57
	/**
72
	/**
58
	 * Permet d'ajouter un message d'erreur ou d'avertissement qui sera envoyé au client.
73
	 * Permet d'ajouter un message d'erreur ou d'avertissement qui sera envoyé au client.
59
	 * Le message doit être au format texte et en UTF-8.
74
	 * Le message doit être au format texte et en UTF-8.
60
	 * @param string $message le message à envoyer. 
75
	 * @param string $message le message à envoyer. 
61
	 */
76
	 */
62
	protected function ajouterMessage($message) {
77
	protected function ajouterMessage($message) {
63
		RestServeur::ajouterMessage($message);
78
		RestServeur::ajouterMessage($message);
64
	}
79
	}
65
	
80
	
66
	/**
81
	/**
67
	 * Méthode appelée lors d'une requête HTTP de type GET.
82
	 * Méthode appelée lors d'une requête HTTP de type GET.
68
	 * 
83
	 * 
69
	 * Si la consultation est un succès, le code statut HTTP retourné sera 200. Dans tous les autres cas,
84
	 * Si la consultation est un succès, le code statut HTTP retourné sera 200. Dans tous les autres cas,
70
	 * la méthode devra retourner le code statut HTTP adéquate.
85
	 * la méthode devra retourner le code statut HTTP adéquate.
71
	 * 
86
	 * 
72
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
87
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
73
	 * @param array Partie de l'url situé après le '?' servant à paramétrer le service demandé.
88
	 * @param array Partie de l'url situé après le '?' servant à paramétrer le service demandé.
74
	 * @return string une chaine indiquant le succès de l'opération et les données demandées.
89
	 * @return string une chaine indiquant le succès de l'opération et les données demandées.
75
	 */
90
	 */
76
	public function consulter($ressources, $parametres) {
91
	public function consulter($ressources, $parametres) {
77
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
92
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
78
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la consultation.");
93
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la consultation.");
79
	}
94
	}
80
	
95
	
81
	/**
96
	/**
82
	 * Méthode appelée lors d'une requête HTTP de type POST.
97
	 * Méthode appelée lors d'une requête HTTP de type POST.
83
	 * 
98
	 * 
84
	 * La ressource à modifier est indiquée via l'url. Les données devant servir à la mise à jours sont passées dans le corps
99
	 * La ressource à modifier est indiquée via l'url. Les données devant servir à la mise à jours sont passées dans le corps
85
	 * de la requête.
100
	 * de la requête.
86
	 * Si la modification est un succès, la méthode devra retourner "true" et le code statut HTTP retourné sera 201.
101
	 * Si la modification est un succès, la méthode devra retourner "true" et le code statut HTTP retourné sera 201.
87
	 * 
102
	 * 
88
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
103
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
89
	 * @param array les données transférées dans le corps de la requête devant servir à la modification.
104
	 * @param array les données transférées dans le corps de la requête devant servir à la modification.
90
	 * @return mixed une chaine indiquant le succès de l'opération ou rien.
105
	 * @return mixed une chaine indiquant le succès de l'opération ou rien.
91
	 */
106
	 */
92
	public function modifier($ressources, $requeteDonnees) {
107
	public function modifier($ressources, $requeteDonnees) {
93
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
108
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
94
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la modification.");
109
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la modification.");
95
		return false;
110
		return false;
96
	}
111
	}
97
	
112
	
98
	/**
113
	/**
99
	 * Méthode appelée lors d'une requête HTTP de type PUT.
114
	 * Méthode appelée lors d'une requête HTTP de type PUT.
100
	 *
115
	 *
101
	 * L'identifiant de la ressource à ajouter est indiqué via l'url si on le connait par avance. Sinon, il doit être créé par 
116
	 * L'identifiant de la ressource à ajouter est indiqué via l'url si on le connait par avance. Sinon, il doit être créé par 
102
	 * le service. Dans ce dernier cas, le nouvel identifiant devrait être renvoyé dans le corps de la réponse.
117
	 * le service. Dans ce dernier cas, le nouvel identifiant devrait être renvoyé dans le corps de la réponse.
103
	 * Si l'ajout est un succès, la méthode devra retourner "true" ou l'identifiant.
118
	 * Si l'ajout est un succès, la méthode devra retourner "true" ou l'identifiant.
104
	 * Le code statut HTTP retourné sera 201 en cas de succès.
119
	 * Le code statut HTTP retourné sera 201 en cas de succès.
105
	 * Dans le cas contraire, la méthode devra retourner false.
120
	 * Dans le cas contraire, la méthode devra retourner false.
106
	 * 
121
	 * 
107
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
122
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
108
	 * @param array les données transférées dans le corps de la requête devant servir à l'ajout.
123
	 * @param array les données transférées dans le corps de la requête devant servir à l'ajout.
109
	 * @return string l'identifiant créé.
124
	 * @return string l'identifiant créé.
110
	 */
125
	 */
111
	public function ajouter($ressources, $requeteDonnees) {
126
	public function ajouter($ressources, $requeteDonnees) {
112
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
127
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
113
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la création.");
128
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la création.");
114
		return false;
129
		return false;
115
	}
130
	}
116
	
131
	
117
	/**
132
	/**
118
	 * Méthode appelée lors d'une requête HTTP de type DELETE (ou POST avec action=DELETE dans le corps de la requete).
133
	 * Méthode appelée lors d'une requête HTTP de type DELETE (ou POST avec action=DELETE dans le corps de la requete).
119
	 * 
134
	 * 
120
	 * Si la suppression est un succès, la méthode devra retourner "true" et le code statut HTTP retourné par
135
	 * Si la suppression est un succès, la méthode devra retourner "true" et le code statut HTTP retourné par
121
	 * RestServeur sera 204.
136
	 * RestServeur sera 204.
122
	 * Si la ressource à supprimer est introuvable, la méthode devra retourner "false" et le code statut HTTP
137
	 * Si la ressource à supprimer est introuvable, la méthode devra retourner "false" et le code statut HTTP
123
	 * retourné par RestServeur sera 404.
138
	 * retourné par RestServeur sera 404.
124
	 * Dans les autres cas de figure ou si vous souhaitez gérer vos propres codes de retour erreur, retourner
139
	 * Dans les autres cas de figure ou si vous souhaitez gérer vos propres codes de retour erreur, retourner
125
	 * la valeur null ou rien.
140
	 * la valeur null ou rien.
126
	 * 
141
	 * 
127
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
142
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
128
	 * @return mixed une chaine indiquant le succès de l'opération ou rien.
143
	 * @return mixed une chaine indiquant le succès de l'opération ou rien.
129
	 */
144
	 */
130
	public function supprimer($ressources) {
145
	public function supprimer($ressources) {
131
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
146
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
132
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la suppression.");
147
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la suppression.");
133
		return null;
148
		return null;
134
	}
149
	}
135
}
150
}
136
?>
151
?>