Subversion Repositories Applications.framework

Rev

Rev 299 | Rev 361 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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