Subversion Repositories Applications.framework

Rev

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

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