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

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

On appelle un squelette "http/atom/<collection>-ressource" quand on appelle une URL d'une ressource.

Dans le contexte, on met le GET comme pour le squelette de la collection, mais on ajoute aussi :

  • ressource => truc
  • id_collection => truc

Avec id_collection généré proprement par id_table_objet().

Donc si on a une URL "atom/patates/1234", on aurra
ressource => 1234
id_patate => 1234

File size: 1.6 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/*
12 * GET sur la racine du serveur Atom
13 * http://site/rest.api/atom
14 */
15function http_atom_get_index_dist(){
16       
17}
18
19/*
20 * GET sur une collection
21 * http://site/rest.api/atom/patates
22 */
23function http_atom_get_collection_dist($collection){
24        // Pour l'instant on va simplement chercher un squelette du nom de la collection
25        // Le squelette prend en contexte les paramètres du GET uniquement
26        if ($flux = recuperer_fond("http/atom/$collection", $_GET)){
27                header('Status: 200 OK');
28                header("Content-type: application/atom+xml; charset=utf-8");
29                echo $flux;
30                exit;
31        }
32        // Si on ne trouve rien c'est que ça n'existe pas
33        else{
34                header('Status: 404 Not Found');
35                exit;
36        }
37}
38
39/*
40 * GET sur une ressource
41 * http://site/rest.api/atom/patates
42 */
43function http_atom_get_ressource_dist($collection, $ressource){
44        // Pour l'instant on va simplement chercher un squelette du nom de la ressource
45        // Le squelette prend en contexte les paramètres du GET + l'identifiant de la ressource en essayant de faire au mieux
46        include_spip('base/objets');
47        $cle = id_table_objet($collection);
48        $contexte = array(
49                $cle => $ressource,
50                'ressource' => $ressource,
51        );
52        $contexte = array_merge($_GET, $contexte);
53       
54        if ($flux = recuperer_fond("http/atom/$collection-ressource", $contexte)){
55                header('Status: 200 OK');
56                header("Content-type: application/atom+xml; charset=utf-8");
57                echo $flux;
58                exit;
59        }
60        // Si on ne trouve rien c'est que ça n'existe pas
61        else{
62                header('Status: 404 Not Found');
63                exit;
64        }
65}
66
67?>
Note: See TracBrowser for help on using the repository browser.