ApiNewYear

ZIA API 2017 - Epitech

View project on GitHub

Quelques questions en vrac...

  • Un client se connecte à mon serveur. Mon objet Client doit-il hériter d'une interface ?
    Oui. Vous disposez d’une interface IHttpClient prévue pour cela.

  • Vous devez intercepter sa requête, la traiter et lui renvoyer une réponse. Comment faire ?
    L’interface IHttpClient permet l’accès à un objet Request (IHttpRequest) et un objet Response (IHttpResponse). Vous devrez créer les modules chargés de ces opérations et modifier ainsi votre objet Client au cours de vos traitements (cf. question ci-dessous).

  • Comment créer un module ?
    Créez une classe qui hérite de l’interface IModule. Pour chaque module, vous devrez créer un objet qui hérite de IConnection (module de connexion) ou IObserver (autres modules) . IConnection sera rattaché au IServer tandis que IObserver sera rattaché au fil d'exécution (IExecutionLine). Leur méthode "update" sera appelée lorsque la chaîne d'exécution exécutera les modules les uns après les autres (méthode "run" de IServer ou IExecutionLine).

  • Qu'est-ce qu'un Observer ?
    Cette notion est l'un des fondamentaux du pattern Observer. Notre API est basée sur cette logique afin de s'affranchir des problématiques de chargement dynamique des modules. Dans ce pattern, on y retrouve deux concepts : Subject et Observers. En théorie, un objet Subject dépend de plusieurs autres objets (Observers). Ces derniers sont notifiés lorsque le Subject change d'état. Dans l'API, le Subject est la chaîne d'exécution et les Observers représentent les modules. Lorsque cette chaîne est lancée, les modules sont appelés. Chaque fois qu'un Observer est rattaché à cette chaîne, des traitements particuliers peuvent tout à fait être effectués sur celle-ci. Vous êtes libre de faire ce que vous souhaitez à ce niveau.

  • Comment exécuter mes modules ?
    Commencez par créer votre chaîne d’exécution en héritant de IExecutionLine et rattachez-y vos modules en appelant leur méthode « hook ». Une fois les modules attachés, appelez la méthode « run » de cette chaîne. Celle-ci exécutera vos modules dans un certain ordre.

  • Dans quel ordre mes modules sont-ils exécutés ?
    Lors de sa création, vous indiquez la catégorie à laquelle votre module appartient et lui affectez une priorité. Ensuite, la chaine d’exécution chargera le module dans la catégorie qui lui aura été assignée. Puis, elle exécutera les modules en fonction de leur priorité au sein de chacune de ces catégories.

  • Quelles doivent être ces catégories ?
    L'API impose 4 catégories de modules (modules de connexion + cf. enum eModuleType). Pour le bon fonctionnement de votre projet, il est essentiel que vous exécutez en premier lieu vos modules de connexion puis votre chaine d’exécution. Cette dernière commence par exécuter les modules REQUEST, ensuite les CGI et RESPONSE.