Subversion Repositories Applications.framework

Rev

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

Rev 362 Rev 368
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 362 2011-09-01 13:43:23Z jpm $
17
 * @version	$Id: RestService.php 368 2011-10-03 12:46:34Z jpm $
18
 * @link		http://www.tela-botanica.org/wikini/DevInformatiques/wakka.php?wiki=AppliBaseDocV3RestServeur
18
 * @link		http://www.tela-botanica.org/wikini/DevInformatiques/wakka.php?wiki=AppliBaseDocV3RestServeur
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
	private $bdd = null;
26
	private $bdd = null;
27
	
27
	
28
	/** Objet Rest Client. */
28
	/** Objet Rest Client. */
29
	private $RestClient = null;
29
	private $RestClient = null;
30
	
30
	
31
	public function __construct($config) {
31
	public function __construct($config) {
32
		$this->config = $config;		
32
		$this->config = $config;		
33
	}
33
	}
34
	
34
	
35
	/** 
35
	/** 
36
	 * Méthode de connection à la base de données sur demande.
36
	 * Méthode de connection à la base de données sur demande.
37
	 * Tous les services web n'ont pas besoin de s'y connecter.
37
	 * Tous les services web n'ont pas besoin de s'y connecter.
38
	 */
38
	 */
39
	protected function getBdd() {
39
	protected function getBdd() {
40
		if (! isset($this->bdd)) {
40
		if (! isset($this->bdd)) {
41
			$this->bdd = new Bdd();
41
			$this->bdd = new Bdd();
42
		}
42
		}
43
		return $this->bdd;
43
		return $this->bdd;
44
	}
44
	}
45
	
45
	
46
	/** 
46
	/** 
47
	 * Méthode permettant de faire appel à un client REST en fonction des besoins du service.
47
	 * Méthode permettant de faire appel à un client REST en fonction des besoins du service.
48
	 */
48
	 */
49
	protected function getRestClient() {
49
	protected function getRestClient() {
50
		if (! isset($this->RestClient)) {
50
		if (! isset($this->RestClient)) {
51
			$this->RestClient = new RestClient();
51
			$this->RestClient = new RestClient();
52
		}
52
		}
53
		return $this->RestClient;
53
		return $this->RestClient;
54
	}
54
	}
-
 
55
 
-
 
56
	/**
-
 
57
	 * Permet d'ajouter un message d'erreur ou d'avertissement qui sera envoyé au client.
-
 
58
	 * Le message doit être au format texte et en UTF-8.
-
 
59
	 * @param string $message le message à envoyer. 
-
 
60
	 */
-
 
61
	protected function ajouterMessage($message) {
-
 
62
		RestServeur::ajouterMessage($message);
-
 
63
	}
55
	
64
	
56
	/**
65
	/**
57
	 * Méthode appelée lors d'une requête HTTP de type GET.
66
	 * Méthode appelée lors d'une requête HTTP de type GET.
58
	 * 
67
	 * 
59
	 * Si la consultation est un succès, le code statut HTTP retourné sera 200. Dans tous les autres cas,
68
	 * Si la consultation est un succès, le code statut HTTP retourné sera 200. Dans tous les autres cas,
60
	 * la méthode devra retourner le code statut HTTP adéquate.
69
	 * la méthode devra retourner le code statut HTTP adéquate.
61
	 * 
70
	 * 
62
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
71
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
63
	 * @param array Partie de l'url situé après le '?' servant à paramétrer le service demandé.
72
	 * @param array Partie de l'url situé après le '?' servant à paramétrer le service demandé.
64
	 * @return string une chaine indiquant le succès de l'opération et les données demandées.
73
	 * @return string une chaine indiquant le succès de l'opération et les données demandées.
65
	 */
74
	 */
66
	public function consulter($ressources, $parametres) {
75
	public function consulter($ressources, $parametres) {
67
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
76
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
68
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la consultation.");
77
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la consultation.");
69
	}
78
	}
70
	
79
	
71
	/**
80
	/**
72
	 * Méthode appelée lors d'une requête HTTP de type POST.
81
	 * Méthode appelée lors d'une requête HTTP de type POST.
73
	 * 
82
	 * 
74
	 * La ressource à modifier est indiquée via l'url. Les données devant servir à la mise à jours sont passées dans le corps
83
	 * La ressource à modifier est indiquée via l'url. Les données devant servir à la mise à jours sont passées dans le corps
75
	 * de la requête.
84
	 * de la requête.
76
	 * Si la modification est un succès, la méthode devra retourner "true" et le code statut HTTP retourné sera 201.
85
	 * Si la modification est un succès, la méthode devra retourner "true" et le code statut HTTP retourné sera 201.
77
	 * 
86
	 * 
78
	 * @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é.
79
	 * @param array les données transférées dans le corps de la requête devant servir à la modification.
88
	 * @param array les données transférées dans le corps de la requête devant servir à la modification.
80
	 * @return mixed une chaine indiquant le succès de l'opération ou rien.
89
	 * @return mixed une chaine indiquant le succès de l'opération ou rien.
81
	 */
90
	 */
82
	public function modifier($ressources, $requeteDonnees) {
91
	public function modifier($ressources, $requeteDonnees) {
83
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
92
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
84
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la modification.");
93
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la modification.");
85
		return false;
94
		return false;
86
	}
95
	}
87
	
96
	
88
	/**
97
	/**
89
	 * Méthode appelée lors d'une requête HTTP de type PUT.
98
	 * Méthode appelée lors d'une requête HTTP de type PUT.
90
	 *
99
	 *
91
	 * L'identifiant de la ressource à ajouter est indiqué via l'url si on le connait par avance. Sinon, il doit être créé par 
100
	 * L'identifiant de la ressource à ajouter est indiqué via l'url si on le connait par avance. Sinon, il doit être créé par 
92
	 * le service. Dans ce dernier cas, le nouvel identifiant devrait être renvoyé dans le corps de la réponse.
101
	 * le service. Dans ce dernier cas, le nouvel identifiant devrait être renvoyé dans le corps de la réponse.
93
	 * Si l'ajout est un succès, la méthode devra retourner "true" et le code statut HTTP retourné sera 201.
102
	 * Si l'ajout est un succès, la méthode devra retourner "true" et le code statut HTTP retourné sera 201.
94
	 * 
103
	 * 
95
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
104
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
96
	 * @param array les données transférées dans le corps de la requête devant servir à l'ajout.
105
	 * @param array les données transférées dans le corps de la requête devant servir à l'ajout.
97
	 * @return string l'identifiant créé.
106
	 * @return string l'identifiant créé.
98
	 */
107
	 */
99
	public function ajouter($ressources, $requeteDonnees) {
108
	public function ajouter($ressources, $requeteDonnees) {
100
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
109
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
101
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la création.");
110
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la création.");
102
		return false;
111
		return false;
103
	}
112
	}
104
	
113
	
105
	/**
114
	/**
106
	 * Méthode appelée lors d'une requête HTTP de type DELETE (ou POST avec action=DELETE dans le corps de la requete).
115
	 * Méthode appelée lors d'une requête HTTP de type DELETE (ou POST avec action=DELETE dans le corps de la requete).
107
	 * 
116
	 * 
108
	 * Si la suppression est un succès, la méthode devra retourner "true" et le code statut HTTP retourné par
117
	 * Si la suppression est un succès, la méthode devra retourner "true" et le code statut HTTP retourné par
109
	 * RestServeur sera 204.
118
	 * RestServeur sera 204.
110
	 * Si la ressource à supprimer est introuvable, la méthode devra retourner "false" et le code statut HTTP
119
	 * Si la ressource à supprimer est introuvable, la méthode devra retourner "false" et le code statut HTTP
111
	 * retourné par RestServeur sera 404.
120
	 * retourné par RestServeur sera 404.
112
	 * Dans les autres cas de figure ou si vous souhaitez gérer vos propres codes de retour erreur, retourner
121
	 * Dans les autres cas de figure ou si vous souhaitez gérer vos propres codes de retour erreur, retourner
113
	 * la valeur null ou rien.
122
	 * la valeur null ou rien.
114
	 * 
123
	 * 
115
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
124
	 * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
116
	 * @return mixed une chaine indiquant le succès de l'opération ou rien.
125
	 * @return mixed une chaine indiquant le succès de l'opération ou rien.
117
	 */
126
	 */
118
	public function supprimer($ressources) {
127
	public function supprimer($ressources) {
119
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
128
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
120
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la suppression.");
129
		RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la suppression.");
121
		return null;
130
		return null;
122
	}
131
	}
123
}
132
}
124
?>
133
?>