Outils pour utilisateurs

Outils du site


findout:api

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
findout:api [2023/08/09 19:03] – created 85.169.126.26findout:api [2023/10/13 10:03] (Version actuelle) admin
Ligne 1: Ligne 1:
-**hierarchie**+base : /api
  
-<code> +  * GET /code --Swagger 
-classes/<classname>/<classname>.php +  * GET /code/< code--> Le contenu du code (Utilisateur, Rubrique ou Info) 
-classes/<classname>/traits/<traitname>.php (<traitname<classname><traitpartpour éviter les doublons (à challenger) +  * DELETE /code/< code--> Supprime l'entrée dans la table correspondante, mais pas dans la table des codes (pas de - réutilisation possible) 
-</code>+  <del>PUT /code/< code--> Ne devrait pas être possible, ni nécessaire</del> 
 +  * <del>PATCH /code/code> --> Ne devrait pas être possible, ni nécessaire</del
 +  <del>POST/code/< code> --> Ne devrait pas être possible, ni nécessaire</del>
  
-chaque classe inclut  +  * GET /heading --> Swagger 
-<code> +  * GET /heading/<heading--> Restitue les éléments intrinsèques de la rubrique (nom, description
-set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__)); +  * PUT /heading/ --> Créer une nouvelle rubrique 
-</code>+  * PATCH /heading/<heading> --> Modifier le descriptif de la rubrique 
 +  * DELETE /heading/<heading> --> Supprimer la rubrique 
 +  * <del>POST /heading --> Pas de cas pour l'instant</del>
  
-**apiPath.php**+  GET /item --> Swagger 
 +  GET /item/<item> --> Restitue les éléments intrinsèques de l'info (nom, description, validité, paramètres) 
 +  PUT /item/ --> Créer une nouvelle infos 
 +  PATCH /item/<item> --> modifier les paramètres de l'info 
 +  * DELETE /item/<item> --> Supprimer l'info 
 +  * <del>POST /item --> Pas de cas pour l'instant</del>
  
-<file+  * GET /sower --> Liste des utilisateurs (pour admin seulement) 
-<?php+  * GET /sower/<sower--> Elément liés à l'utilisateur (*) 
 +  * PUT /sower --> Créer une nouvel utilisateur (quid de la création quand c'est à partir d'un réseau social) 
 +  * PATCH /sower/<sower> --> modifier les paramètres utilisateur 
 +  * DELETE /sower/<sower> --> supprimer un utilisateur 
 +  * POST /sower/login --> connexion utilisateur 
 +  * POST /sower/<sower>/logout --> déconnexion utilisateur 
 +  * POST /sower/<sower>/changePassword --> changement de mot de passe (version non sociale) 
 +  * POST /sower/sociallogin --> connexion utilisateur par réseau social
  
-$sApiPaths = '[ +  * GET /sower/<sower>/heading --> Liste des rubriques de l'utilisateur (*) 
-  { "method": "GET", "path": "obj1", "go": "getAll" }, +  GET /sower/<sower>/heading/<heading>/item --> Liste des infos d'une rubrique de l'utilisateur (*)
-  { "method": "GET", "path": "obj1/$id", "go": "get;1" }, +
-  { "method": "PATCH", "path": "obj2/$id", "go": "patch;1" }, +
-  { "method": "PATCH", "path": "obj1/$id", "go": "patch;1" }, +
-  { "method": "GET", "path": "obj2", "go": "geAll" }, +
-  { "method": "GET", "path": "obj2/$id", "go": "get;1" }, +
-  { "method": "GET", "path": "obj2/$id/details", "go": "getDetails;1" }, +
-  { "method": "GET", "path": "obj2/$id/details/$detid", "go": "getDetail;1,3"+
-];+
  
-spl_autoload_register(function($className) { +  * GET /sower/<sower>/warehouse --> Liste des codes stockés par l'utilisateur (*)
-    $fileName = stream_resolve_include_path('classes/' . $className . '/' . $className . '.php'); +
-    if ($fileName !== false) { +
-        include $fileName; +
-    } +
-}); +
-spl_autoload_register(function($traitName) { +
-    $fileName = stream_resolve_include_path('traits/' . $traitName . '.php'); +
-    if ($fileName !== false) { +
-        include $fileName; +
-    } +
-});+
  
-function apiPathMatch $method, $path { +  * GET /sower/<sower>/awitingNotifs --> Liste des notifications non acquittées et non expirées pour l'utilisateur (*
-        $aPath = explode ( '/', $path ; +  * GET /sower/<sower>/awitingNotifNum --> Nombre de notifications non acquittées et non expirées pour l'utilisateur (*
-        $iParts = count $aPath +  * POST /sower/<sower>/notification/<notification>/acknowledge -> acquitter une notification (marquer comme lue, n'apparait plus)
-        $sFirst = $aPath [ 0 ] ; +
-        $sMethod = $method ;+
  
-        $aCompare = sortPaths () ; +Optionnel / plus tard 
-        foreach ( $aCompare as $iKey =$aValue ) { +  * GET /sower/<sower>/authorization --Liste des autorisations accordées par l'utilisateur à ceux qui voient son profil (*
-                if ( $method != $aValue [ 'method' ] ) continue ; +  * PATCH /sower/<sower>/authorization --> modifier les autorisations données par l'utilisateur (*)
-                if $sFirst != $aValue [ 'first'continue ; +
-                if ( $iParts $aValue [ 'count' ] ) continue ; +
-                if $iParts > $aValue [ 'count'continue ;+
  
-                if ( $iParts == 1 ) { +  * PUT /sower/<sower>/warehouse/ --> stockage d'un codes externes par l'utilisateur avec une note personnelle 
-                        doThings ( $aValue [ 'first], $aValue [ 'go], $path ; +  * PATCH /sower/<sower>/warehouse/< code> --> modification d'une note sur un codes externes stocké par l'utilisateur (devrait remplacer le PATCH /warehouse/<warehouse>
-                        return ; +  * DELETE /sower/<sower>/warehouse/< code> --> suppression du stockage d'un codes externes stocké par l'utilisateur (devrait remplacer le DELETE /warehouse/<warehouse>)
-                }+
  
-                $iCount = 0 ; +  * GET /sower/<sower>/statistics --> agrégat de statistiques autour des données de l'utilisateur et de ses codes 
-                foreach ( explode ( '/', $aValue [ 'path' ] ) as $iKey2 => $sPath ) { +  PUT /like --> recevoir un like concernant l'application (afin d'en faire la promotion
-                        $iCount++ ; +  * POST /sower/<sower>/share --> envoyer un code (avec un messagepar mail/notification à une liste de connaissance dans l'application
-                        if ( preg_match ( '/\$.*/', $sPath ) ) continue ; +
-                        if $sPath != $aPath [ $iKey2 ] break ; +
-                } +
-                if $iCount == $iParts +
-                        doThings ( $aValue [ 'first' ], $aValue [ 'go' ], $path ) ; +
-                        return ; +
-                } +
-        } +
-        echo "No match" ; +
-}+
  
-function sortPaths () { +  * POST /report/bug --> rapporter un dysfonctionnement 
-        global $sApiPaths ;+  * POST /report/misuse --> rapporter un comportement/contenu inapproprié
  
-        $aPaths = json_decode ( $sApiPaths, true ) ; +Pour les admins 
- +  * GET /system/option --liste des options 
-        foreach ( $aPaths as $iKey =$aPath ) { +  * GET /system/option/<option--> voir l'option <option> 
-                $sLocalPath = $aPath ['path'] ; +  * PATCH /system/option/<option> -> mettre à jour l'option <option
-                $sLocalGo = $aPath ['go'] ; +  * GET /system/admin --liste des admins 
-                $aLocalPath = explode ('/', $sLocalPath) ; +  PUT /system/admin/<sower> --> nouvel admin <sower> 
-                $iLocalPart = count ( $aLocalPath ) ; +  DELETE /system/admin/<sower> --> retirer le droit admin à <sower
-                $sLocalFirst = $aLocalPath [0] ; +  GET /system/ban -> liste des utilisateurs à qui on a retiré le droit de se connecter 
-                $sLocalMethod = $aPath [ 'method' ] ; +  PUT /system/ban/<sower> -> retirer le droit de se connecter à un utilisateur 
- +  DELETE /system/ban/<sower> -> restituer le droits de se connecter à un utilisateur 
-                $aLocalResult [ $iKey ] [ 'count' ] = $iLocalPart ; +  * GET /system/statistics
-                $aLocalResult [ $iKey ] [ 'first' ] = $sLocalFirst ; +
-                $aLocalResult [ $iKey ] [ 'method' ] = $sLocalMethod ; +
-                $aLocalResult [ $iKey ] [ 'path' ] = $sLocalPath ; +
-                $aLocalResult [ $iKey ] [ 'go' ] = $sLocalGo ; +
- +
-                $aSort1 [ $iKey ] = $sLocalFirst ; +
-                $aSort2 [ $iKey ] = $iLocalPart ; +
-        } +
- +
-        array_multisort($aSort1, SORT_ASC, $aSort2, SORT_ASC, $aLocalResult ); +
- +
-        return $aLocalResult ; +
-+
- +
-function doThings( $class, $method, $path) +
-+
-        $o = new $class () ; +
-        $a = explode ( ';', $method ) ; +
-        $m = $a [ 0 ] ; +
-        $p = explode ( ',', $a [ 1 ] ) ; +
-        $pa = explode ( '/', $path ) ; +
-        $pl = [] ; +
-        foreach ( $p as $k =$pn ) { +
-                echo "avec le param : " . $pa [ $pn ] . "\n"+
-                $pl [] = $pa [ $pn ] ; +
-        } +
- +
-        $o -> {$m} ( $pl ) ; +
-+
- +
-apiPathMatch ( 'GET', 'obj2/123/details/ABC) ; +
- +
-?+
-</file+
- +
-**Classe obj2** +
-classes/obj2.php * +
- +
-<file> +
-<?php +
- +
-set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__)); +
- +
-class obj1 { +
-        use obj1Get ; +
-        use obj1GetAll ; +
-        use obj1Patch ; +
- +
-        private $text; +
- +
-        function __construct () { +
-                $this -> text = 'Je suis OBJ1' ; +
-        } +
- +
-        public function getText () { +
-                return ( $this -> text ) ; +
-        } +
-+
- +
-</file+
- +
-**Trait : obj2GetDetail*+
-classes/obj2/traits/obj2GetDetail.php * +
-paramètre : tableau de valeurs * +
- +
-<file> +
-<?php +
- +
-trait obj2GetDetail { +
-        function getDetail ( $p ) { +
-                echo $this -> text () . "\n" ; +
-                echo "- dans getDetails" . "\n"+
-                echo "- params : " . $p [0] . ", " . $p [1] . "\n"+
-        } +
-+
- +
-</file>+
  
 +(*)s'il est connecté et qu'il demande ces propres infos
  
findout/api.1691600597.txt.gz · Dernière modification : 2023/08/09 19:03 de 85.169.126.26 · Actuellement bloqué par : 192.168.0.100,216.73.216.57

DokuWiki Appliance - Powered by TurnKey Linux