Exemplo n.º 1
0
 /** Lance le serveur */
 function run()
 {
     // racine du serveur a enregistrer qq part (pour l'instant ici)
     $root = '/blogmarks/servers/atom';
     // On construit le tableau d'arguments pour les filtres
     $args = array();
     // on extrait l'URI relative
     $uri = $_SERVER['REQUEST_URI'];
     //***** DEBUG echo $uri."<br/>".$root;
     $uri = ereg_replace($root, '', $uri);
     $args['uri'] = $uri;
     $args['method'] = $_SERVER['REQUEST_METHOD'];
     $args['content'] = $_GLOBALS['HTTP_RAW_POST_DATA'];
     // On filtre la requête
     $filter = new FilterChainRoot(array(new ContextBuilderFilter(), new AuthenticateFilter()));
     $ret = $filter->execute(&$args);
     if (BlogMarks::isError($ret)) {
         // erreur de filtre
         echo $ret->getMessage();
         return;
     }
     // **** DEBUG
     echo "objet : " . $args['object'] . "<br/>";
     echo "method : " . $args['method'] . "<br/>";
     echo "tag : " . $args['tag'] . "<br/>";
     echo "user : "******"<br/>";
     echo "id : " . $args['id'] . "<br/>";
     echo "auth_str :" . $args['auth_str'] . "<br/>";
     // **********
     // On construit le controlleur selon le type d'objet de la requête
     $ctrlerFactory = new ControllerFactory();
     $ctrler = $ctrlerFactory->createController($args['object']);
     if (BlogMarks::isError($ctrler)) {
         echo $ctrler->getMessage();
         exit(1);
     }
     // On lance le controlleur pour l'objet de la requête
     $response = $ctrler->execute($args);
     if (BlogMarks::isError($response)) {
         // erreur du controlleur de requête
         return;
     }
     // On applique le renderer atom a la reponse et on la renvoit
     $rendererFactory = new rendererFactory();
     $renderer = $rendererFactory->createRenderer($args['object']);
     // GERER LA REPONSE HTTP
     echo "HTTP/1.1 200 Ok\n";
     $response->accept($renderer);
     echo $renderer->render();
 }
Exemplo n.º 2
0
 function execute($arg)
 {
     // Récupère la ligne X-WSSE du header
     $headers = apache_request_headers();
     $auth_line = '';
     foreach ($headers as $header => $value) {
         if ($header == "X-WSSE") {
             $auth_line = $value;
         }
     }
     if ($auth_line != '') {
         // on récupère les informations du header
         $pattern = 'Username="******", PasswordDigest="(.+)",';
         $pattern .= ' Nonce="(.+)", Created="(.+)"';
         if (ereg($pattern, $auth_line, $regs)) {
             $marker = new BlogMarks_Marker();
             echo "authentifie ...\n";
             $auth_str = $marker->authenticate($regs[1], $regs[2], $regs[3], $regs[4]);
             if (Blogmarks::isError($auth_str)) {
                 echo "Error :" . $auth_str->getMessage() . "\n";
             }
             $arg['auth_str'] = $auth_str;
         } else {
             return BlogMarks::raiseError("Erreur à la ligne X-WSSE : {$pattern} ne vérfifie pas {$auth_line}", 400);
         }
     }
     // passe au filtre suivant
     if ($this->_hasChild) {
         $tmp =& $this->_childFilter;
         return $tmp->execute($arg);
     }
 }
Exemplo n.º 3
0
 function execute($arg)
 {
     // Récupère la ligne X-WSSE du header
     $headers = apache_request_headers();
     $auth_line = '';
     foreach ($headers as $header => $value) {
         if ($header == "X-WSSE") {
             $auth_line = $value;
         }
     }
     if ($auth_line != '') {
         // on récupère les informations du header
         $pattern = 'Username="******", PasswordDigest="(.+)",';
         $pattern .= ' Nonce="(.+)", Created="(.+)", Expires="(.+)"';
         if (ereg($pattern, $auth_line, $regs)) {
             $auth = $arg['marker']->authenticate($regs[1], $regs[2], $regs[3], $regs[4], false);
             if (Blogmarks::isError($auth)) {
                 return $auth;
             }
         } else {
             return BlogMarks::raiseError("Erreur à la ligne X-WSSE : {$pattern} ne vérfifie pas {$auth_line}", 400);
         }
     }
     // passe au filtre suivant
     if ($this->_hasChild) {
         $tmp =& $this->_childFilter;
         return $tmp->execute($arg);
     }
 }
Exemplo n.º 4
0
 /** Parse un document XML décrivant un Tag et renvoit un tableau de valeurs.
  */
 function parseAtom($buffer)
 {
     $props = array();
     // on construit le DOM à partir du flux XML
     if (!($dom = domxml_open_mem($buffer))) {
         return BlogMarks::raiseError('Impossible de créer le document DOM', 500);
     }
     // récupère l'élément racine (tag)
     $root = $dom->document_element();
     // enregistre la langue du tag
     $props['lang'] = $root->get_attribute('lang');
     // enregistre le titre du tag
     $title = $root->get_elements_by_tagname('title');
     $props['title'] = $title[0]->get_content();
     // enregistre la description du tag
     $summary = $root->get_elements_by_tagname('summary');
     $props['summary'] = $summary[0]->get_content();
     // enregistre le nom du tag parent
     $subTagOf = $root->get_elements_by_tagname('subTagOf');
     if (!($subTagOf = array())) {
         $props['subTagOf'] = $subTagOf[0]->get_content();
     }
     return $props;
 }