source: spip-zone/_plugins_/svp_api/trunk/inc/svpapi_reponse.php @ 96784

Last change on this file since 96784 was 96784, checked in by eric@…, 5 years ago

Quelques mises au point de l'api collection de plugins.
Ajout de l'api ressource sur un plugin.
On renvoie le plugin lui-même et ses paquets.
Une première version à tester.

  • Property svn:eol-style set to native
File size: 2.2 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5
6/**
7 * @param $requete
8 *
9 * @return array
10 */
11function reponse_initialiser_contenu($requete) {
12
13        // Récupération du schéma de données de SVP
14        include_spip('inc/config');
15        $schema = lire_config('svp_base_version');
16
17        // Stockage des éléments de la requête
18        // -- La méthode
19        $demande = array('methode' => $requete->getMethod());
20        // -- Les éléments format, collection et ressource
21        $demande = array_merge($demande, $requete->attributes->all());
22        // -- Les critères additionnels comme la catégorie ou la compatibilité SPIP fournis comme paramètres de l'url
23        $parametres = $requete->query->all();
24        $demande['criteres'] = array_intersect_key($parametres, array_flip(array('categorie', 'compatible_spip')));
25        // -- Le format du contenu de la réponse fourni comme paramètre de l'url
26        $demande['format'] = isset($parametres['format']) ? $parametres['format'] : 'json';
27
28        // Initialisation du bloc d'erreur à ok par défaut
29        $erreur['status'] = 200;
30        $erreur['type'] = '';
31
32        // On intitialise le contenu avec les informations collectées.
33        // A noter que le format de sortie est initialisé par défaut à json indépendamment de la demande, ce qui permettra
34        // en cas d'erreur sur le format demandé dans la requête de renvoyer une erreur dans un format lisible.
35        $contenu = array(
36                'requete'       => $demande,
37                'erreur'        => $erreur,
38                'schema'        => $schema,
39                'items'         => array());
40
41        return $contenu;
42}
43
44
45/**
46 * @param $erreur
47 *
48 * @return mixed
49 */
50function reponse_expliquer_erreur($erreur) {
51
52        $prefixe = 'svpapi:erreur_' . $erreur['status'] . '_' . $erreur['type'];
53        $parametres = array(
54                'element'       => $erreur['element'],
55                'valeur'        => $erreur['valeur']
56                );
57
58        $explication['title'] = _T("${prefixe}_titre", $parametres);
59        $explication['detail'] = _T("${prefixe}_message", $parametres);
60
61        return $explication;
62}
63
64
65/**
66 * @param $reponse
67 * @param $contenu
68 *
69 * @return mixed
70 */
71function reponse_construire($reponse, $contenu, $format_reponse) {
72
73        $reponse->setCharset('utf-8');
74        $reponse->setStatusCode($contenu['erreur']['status']);
75
76        if ($format_reponse == 'json') {
77                $reponse->headers->set('Content-Type', 'application/json');
78                $reponse->setContent(json_encode($contenu));
79        }
80
81        return $reponse;
82}
Note: See TracBrowser for help on using the repository browser.