source: spip-zone/_plugins_/app/trunk/http/atom.php @ 78577

Last change on this file since 78577 was 78577, checked in by rastapopoulos@…, 7 years ago

Suivre la nouvelle implémentation HTTP.

File size: 2.1 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6/*
7 * Implémentation d'un serveur REST pour APP (AtomPub)
8 */ 
9
10/**
11 * Rien, car en Atom il n'y a malheureusement pas de gestion des erreurs pour l'instant
12 *
13 * @param int $code Le code HTTP de l'erreur à générer
14 * @return string Retourne une chaîne vide
15 */
16function http_atom_erreur_dist($code, $requete, $reponse){
17        $reponse->setStatusCode($code);
18        $reponse->setContent('');
19        return $reponse;
20}
21
22/*
23 * GET sur une collection
24 * http://site/rest.api/atom/patates
25 */
26function http_atom_get_collection_dist($requete, $reponse){
27        $collection = $requete->attributes->get('collection');
28        $contexte = $requete->query->all();
29       
30        // Pour l'instant on va simplement chercher un squelette du nom de la collection
31        // Le squelette prend en contexte les paramètres du GET uniquement
32        if ($flux = recuperer_fond("http/atom/$collection", $contexte)){
33                $reponse->setStatusCode(200);
34                $reponse->setCharset('utf-8');
35                $reponse->headers->set('Content-Type', 'application/atom+xml');
36                $reponse->setContent($flux);
37        }
38        // Si on ne trouve rien c'est que ça n'existe pas
39        else{
40                $reponse->setStatusCode(404);
41        }
42       
43        return $reponse;
44}
45
46/*
47 * GET sur une ressource
48 * http://site/rest.api/atom/patates
49 */
50function http_atom_get_ressource_dist($requete, $reponse){
51        // Pour l'instant on va simplement chercher un squelette du nom de la ressource
52        // Le squelette prend en contexte les paramètres du GET + l'identifiant de la ressource en essayant de faire au mieux
53        include_spip('base/objets');
54        $collection = $requete->attributes->get('collection');
55        $ressource = $requete->attributes->get('ressource');
56        $cle = id_table_objet($collection);
57        $contexte = array(
58                $cle => $ressource,
59                'ressource' => $ressource,
60        );
61        $contexte = array_merge($requete->query->all(), $contexte);
62       
63        if ($flux = recuperer_fond("http/atom/$collection-ressource", $contexte)){
64                $reponse->setStatusCode(200);
65                $reponse->setCharset('utf-8');
66                $reponse->headers->set('Content-Type', 'application/atom+xml');
67                $reponse->setContent($flux);
68        }
69        // Si on ne trouve rien c'est que ça n'existe pas
70        else{
71                $reponse->setStatusCode(404);
72        }
73       
74        return $reponse;
75}
76
Note: See TracBrowser for help on using the repository browser.