informatique:rss:simulation_de_flux
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| informatique:rss:simulation_de_flux [2024/11/24 03:57] – supprimée - modification externe (Date inconnue) 127.0.0.1 | informatique:rss:simulation_de_flux [2024/11/24 03:58] (Version actuelle) – alexis | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Simulation de flux RSS pour FreshRSS ======= | ||
| + | FreshRSS est un agrégateur de flux RSS. | ||
| + | Il permet de regrouper au même endroit les articles proposés en scannant périodiquement les données mises à disposition par les sites. | ||
| + | C'est très pratique car cela évite de devoir faire cela manuellement. | ||
| + | Mais lors du développement de la solution ou lors de tests, cette fonctionnalité devient génante car les données changent. | ||
| + | C'est pourquoi simuler les flux RSS dans ces conditions devient nécessaire. | ||
| + | |||
| + | Pour cela, nous allons utiliser un serveur de « //mocks// » qui nous servira des contenus prédéfinis. | ||
| + | Ici, nous allons utiliser [[https:// | ||
| + | |||
| + | ==== Mise en place de l' | ||
| + | Dans le répertoire de travail de WireMock, il faut créer les répertoires // | ||
| + | |||
| + | <WRAP prewrap> | ||
| + | <code bash> | ||
| + | mkdir __files mappings | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Le répertoire // | ||
| + | |||
| + | <WRAP alert> | ||
| + | Ces répertoires doivent être créés avec les permissions utilisées par le conteneur de Wiremock. | ||
| + | Si ce n'est pas le cas, les fichiers pourraient ne pas être accessibles depuis le réseau interne. | ||
| + | Pour éviter cela, il suffit de démarrer le conteneur de Wiremock. | ||
| + | Celui-ci se chargera de créer les répertoires manquants. | ||
| + | </ | ||
| + | |||
| + | ==== Récupération des données des flux RSS ==== | ||
| + | Il existe plusieurs méthodes pour récupérer les données d'un flux RSS. Ici, nous allons utiliser //wget// avec la commande suivante : | ||
| + | <WRAP prewrap> | ||
| + | <code bash> | ||
| + | # Version courte | ||
| + | wget https:// | ||
| + | |||
| + | # Version longue | ||
| + | wget https:// | ||
| + | </ | ||
| + | </ | ||
| + | * '' | ||
| + | |||
| + | <WRAP info> | ||
| + | Pour que cela fonctionne correctement, | ||
| + | </ | ||
| + | |||
| + | ==== Configuration statique ==== | ||
| + | Maintenant que nous avons nos données, il faut dire à WireMock comment les restituer. | ||
| + | Pour cela, nous allons créer un fichier de configuration dans le répertoire // | ||
| + | Son nom n'a pas d' | ||
| + | Nous allons créer le fichier // | ||
| + | <WRAP prewrap> | ||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | Ce fichier indique à WireMock de retourner le contenu du fichier précédemment téléchargé lors d'un appel GET sur l'URL définie. | ||
| + | |||
| + | <WRAP info> | ||
| + | Il faudra créer un fichier de configuration pour chaque fichier de données téléchargé. | ||
| + | Pour 1 ou 2 fichiers, la tâche n'est pas trop importante mais nous allons vite nous rendre compte que ce n'est pas soutenable si le nombre de fichiers augmente sérieusement. | ||
| + | C'est pour cela qu'il vaut mieux utiliser une configuration dynamique comme décrite plus bas. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Configuration dynamique ==== | ||
| + | Pour traiter de nombreux messages, il vaut mieux opter pour une configuration dynamique. | ||
| + | Nous allons donc créer le fichier // | ||
| + | <WRAP prewrap> | ||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | Voici ce qui change par rapport à la précédente configuration : | ||
| + | * WireMock ne surveille pas une URL en particulier mais toutes les URLs qui ont le même format que celui décrit ((Ici, toutes les URLs sont traitées)). | ||
| + | * Le nom du fichier à retourner est directement extrait de la requête. Il est ajouté dans le modèle de réponse. | ||
| + | * L' | ||
| + | |||
| + | <WRAP important> | ||
| + | Le système de modèle de réponse ne fait pas partie intégrante de WireMock, c'est une extension. | ||
| + | Il faudra donc la charger lors du démarrage pour pouvoir en profiter. | ||
| + | </ | ||
| + | |||
| + | ==== Lancement de WireMock ==== | ||
| + | <WRAP prewrap> | ||
| + | <code bash> | ||
| + | # Version courte pour configuration statique | ||
| + | docker run -it --rm -p 9090:8080 --name wiremock --network freshrss-network -v $PWD:/ | ||
| + | |||
| + | # Version longue pour configuration statique | ||
| + | docker run --interactive --tty --rm --publish 9090:8080 --name wiremock --network freshrss-network --volume $PWD:/ | ||
| + | |||
| + | # Version courte pour configuration dynamique | ||
| + | docker run -it --rm -p 9090:8080 --name wiremock --network freshrss-network -v $PWD:/ | ||
| + | |||
| + | # Version longue pour configuration dynamique | ||
| + | docker run --interactive --tty --rm --publish 9090:8080 --name wiremock --network freshrss-network --volume $PWD:/ | ||
| + | </ | ||
| + | </ | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | <WRAP important> | ||
| + | Lors de l' | ||
| + | Si ce n'est pas le cas, cela ne fonctionnera pas. | ||
| + | </ | ||
| + | |||
| + | ==== Utilisation des données ==== | ||
| + | Maintenant que notre conteneur est lancé, il est possible d' | ||
| + | * soit depuis un autre conteneur connecté au même réseau avec l'URL '' | ||
| + | * soit depuis l' | ||
| + | |||
| + | ==== Mise à jour des configurations ==== | ||
| + | |||
| + | Pour mettre à jour les configurations, | ||
| + | * soit redémarrer le conteneur, | ||
| + | * soit envoyer une requête //POST// à l'URL '' | ||
| + | ==== Liens ==== | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
