projet-webservices/README.md

58 lines
2.4 KiB
Markdown
Raw Normal View History

2022-12-01 14:14:19 +01:00
# Projet webservices
2022-12-01 14:49:41 +01:00
## Composants
Un serveur fournit un service par le biais d'une API, qui est requêtée par deux clients.
Pour certaines fonctionnalités, le serveur doit faire des requêtes auprès d'une API publique.
Il doit donc embarquer une fonctionnalité de client auprès de l'API publique.
## Languages
Le serveur est écrit en Rust.
Le composant "client" du serveur, qui requête l'API publique, est également écrit en Rust.
Deux clients sont écrits, un en Rust, l'autre en Python.
2022-12-01 15:04:51 +01:00
## Token API
2022-12-08 16:56:47 +01:00
Un fichier `.token` contient le token nécessaire pour l'API publique.
2022-12-01 15:04:51 +01:00
Pour des raisons légales évidentes, ce fichier n'est pas inclus dans git.
C'est à l'utilisateur de créer un compte et d'ajouter son token dans ce fichier.
2022-12-01 15:13:19 +01:00
En l'occurence, l'API publique utilisée est celle de VirusTotal. Il faut s'y
créer un compte, la clé est alors disponible après authentification.
## Fonctionnalités
![architecture](./img/archi.png)
### Client - Artemis (Python)
### Client - Kratos (Rust)
### Serveur - Hephaïstos
2022-12-08 17:37:10 +01:00
- `receive_request`
Serveur HTTP en `listen` pour recevoir les requêtes API REST en provenance d'un client (Artemis ou Kratos).
2022-12-08 17:37:10 +01:00
Envoie l'URL reçu à `parse_url`.
- `parse_url`
Reçoit l'URL par `receive_request` et détermine la fonction à appeler.
- `get_data`
Reçoit les informations de la part de `parse_given_url`, et fait les choses suivantes :
* Requête `sql_cache` pour trouver les données localement.
* S'il les trouve, envoie les données à `transform_to_json`
* S'il ne les trouve pas, requête `api_client` et attend le retour (booléen qui lui indique que l'écriture a fonctionné)
* Une fois le retour positif, nouvelle requête `sql_cache`, puis idem, si donnée absente etc.
Le tout peut être mis dans une boucle `while not sql_content`.
- `sql_cache`
Base de données SQL qui sert de cache local et qui est requêtée par `get_data` (lecture) et `api_client` (écriture).
- `api_client`
Effectue les requêtes d'API REST auprès de VirusTotal.
Quand il reçoit des données valides, il les ajoute à `sql_cache`.
Retourne un booléen pour indiquer le succès ou l'échec de l'`insert`.
- `transform_to_json`
Fonction qui reçoit des données en provenance de `get_data` pour en faire du JSON et les envoie à `send_data`.
- `send_data`
Envoie les données au client (Artemis ou Kratos).