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:// |