diff --git a/index.php b/index.php index 3f4dc7b..8bc82e1 100755 --- a/index.php +++ b/index.php @@ -98,8 +98,8 @@ // Api - $R->post('api.+', function(){ - $request = ModuleRequest::fromPost($_POST); + $R->post('api(?:/(.*))?', function($url){ + $request = ModuleRequest::fromPost($url, $_POST); $answer = $request->dispatch(); echo $answer->serialize(); diff --git a/manager/ModuleRequest.php b/manager/ModuleRequest.php index b565c3a..fc9ef46 100755 --- a/manager/ModuleRequest.php +++ b/manager/ModuleRequest.php @@ -252,49 +252,15 @@ } - - - - - /* DESERIALISATION ET CREATION D'UN OBJET - * - * @jsonString Json au format string contenant les donnees - * - * @return instance Retourne un objet de type - * - */ - public static function fromString($jsonString){ - $json = json_decode( $jsonString, true ); - - // Verification du parsage - if( $json == null ) - return new ModuleRequest(); - - // Verification des parametres - if( !isset($json['path']) ) - return new ModuleRequest(); - - // On definit $params au cas ou il soit vide - $params = $json; - // On retire le @path de @params - unset($params['path']); - - return new ModuleRequest($json['path'], $params); - } - - - - - - /* DESERIALISATION A PARTIR DES DONNEES POST * + * @url Contenu de l'url après api/ (si existe) * @post Tableau des donnes $_POST => @path + @data (opt) * * @return instance Retourne un objet de type * */ - public static function fromPost($post){ + public static function fromPost($url, $post){ /* [0] Verification de l'authentification =========================================================*/ // On definit le token @@ -303,9 +269,19 @@ /* [1] On verifie que le @path est renseigne =========================================================*/ + /* (1) Si le path est dans @url */ + $pathInUrl = strlen($url[0]) > 0 && preg_match('#^([\w_-]+)/([\w_-]+)/?$#', $url[0], $urlMatches); + + // On l'utilise pour le chemin + if( $pathInUrl ) + $post['path'] = $urlMatches[1].'/'.$urlMatches[2]; + + /* (2) On vérifie dans tous les cas si le path existe */ if( !isset($post['path']) ) return new ModuleRequest(); + + /* [2] On verifie que @data est renseigne =========================================================*/ // Si variable n'existe pas, on cree un tableau vide @@ -314,6 +290,8 @@ // On retire le @path de @params unset($params['path']); + + /* [3] On met les paramètres JSON en JSON (si ils décodent sans erreur) =========================================================*/ foreach($params as $name=>$value){ diff --git a/manager/ModuleResponse.php b/manager/ModuleResponse.php index 0c45e4e..e519ec9 100755 --- a/manager/ModuleResponse.php +++ b/manager/ModuleResponse.php @@ -139,6 +139,9 @@ // Code Http ManagerError::setHttpCode($this->error); + // Type de contenu + // header('Content-Type: application/json'); + // On rajoute l'erreur au message $returnData = array_merge( array(