Aller au contenu

Classe lrHook

Role

Décrit un hook LightREST.

Un hook permet d’intercepter des évènements au cours du le cycle de vie d’une requête REST (ou des évènements d’exécution) afin d’exécuter du code transversal : authentification, audit, logs, métriques, validation, transformation de réponse, etc.

Un hook peut être déclaré : - globalement sur le serveur avec lrServer:AddHook() - localement sur une route avec lrRoute:AddHook()

Membres et propriétés

NomTypeUsage
EventsEventTypeCombinaison de valeurs EventType
Le Hook sera déclenché pour tous les événements indiqués (exemple : EVE_INFO + EVE_WARNING+ EVE_PANIC)
HandlerprocédureProcédure appelée lorsque l'évènement se produit.

Prototype attendu :
    procedure fnHook(pEvent est lrHook:EventInfo) : lrHook:EventReturn

Le hook peut :
  - consulter et modifier pEvent.Request (par exemple en mettant des données dans CustomData à l'usage de la méthode REST qui sera lancée ultérieurement)
  - modifier pInfo.Response
  - retourner une valeur EventReturn pour influencer le flux (EVE_OK, EVE_ABORT, ...)
EnabledbooléenActive ou désactive le hook.
Par défaut = Vrai.

Types
EventType — Type d'événement

🏷️ Type
Enumération

📘 Présentation
Evénements dont l'interception est possible au niveau Serveur et/ou Route

📋 Valeurs
ValeurUsage
EVE_INFOHook serveur. Information sur l'exécution
EVE_STARTINGHook serveur. En cours de démarrage
EVE_STARTEDHook serveur. Démarré
EVE_STOPPINGHook serveur. En cours d'arrêt
EVE_STOPPEDHook serveur. Arrêté
EVE_CONNECTHook serveur. Nouvelle connexion (permet par exemple de filtrer les connexions par adresse IP)
EVE_RECEIVEDHook serveur et route. Réception d'une requête REST
EVE_AUTH_FAILEDHook serveur et route. Authentification échouée
EVE_BEFORE_HANDLERHook serveur et route. Avant exécution de la route
EVE_AFTER_HANDLERHook serveur et route. Après exécution de la route
EVE_RESULTHook serveur et route. Avant envoi du résultat (étape ultime pour vérifier, compléter, chiffrer, signer, filtrer, limiter, journaliser, ...) la réponse avant envoi au client.
EVE_ERRORHook serveur. Erreur lors de l'exécution
EVE_WARNINGHook serveur. Warning lors de l'exécution
EVE_PANICHook serveur. Erreur grave lors de l'exécution

EventInfo — Structure transmise au handler du hook.

🏷️ Type
Structure

📘 Présentation
Expose le contexte du HOOK au handler (évènement, requête, réponse, message) et lui permet d’agir sur le flux (contenu, workflow, ...)

🔧 Structure
NomTypeUsage
TypeEventTypeÉvènement déclencheur du hook (EVE_CONNECT, EVE_ERROR, ...)
Requestobjet lrRequestObjet requête REST (peut être Null selon l'évènement). Peut être modifié (par exemple en stockant dans CustomData des données à l'attention de la méthode REST.
Responseobjet lrResponseObjet réponse en cours (peut être Null selon l'évènement). Peut être modifié.
MessagechaîneMessage complémentaire (détail erreur, warning, debug...)
RouteTagchaîneTag de la route courante (dans le cas d'un Hook sur une route)

EventReturn — Valeur de retour d'un Hook

🏷️ Type
Enumération

📘 Présentation
Détermine le comportement du traitement après exécution du Hook.
ℹ Pour les Hooks informatifs (info, état du serveur, erreurs, ...) la valeur de retour du Hook est sans effet sur la poursuite du traitement de la route en cours.

📋 Valeurs
ValeurUsage
EVE_OKLe traitement se poursuit, enrichi des données éventuellement ajoutées ou modifiées dans les objets lrRequest et lrResponse
EVE_ABORTLe traitement est arrêté. Le contenu de l'objet lrResponse est envoyé au client
EVE_REPLACELe traitement du Hook remplace celui de la route. Les informations additionnelles (entêtes automatiques, ...) sont ajoutées à lrResponse avant envoi au client.