| 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 /doc/framework/
|
| 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);
|