Development #32796
matomo: générer une première visite depuis hobo au moment de la création de l'instance matomo
0%
Description
Simuler une première visite permet d'éviter l'affichage de la page 'siteWithoutData' qui prête à confusion maintenant que matomo est configuré automatiquement.
Cela fausse un peu les statistiques, mais permet de rester sur une installation de matomo standard.
C'est prévu par l'API matomo : https://developer.matomo.org/api-reference/tracking-api
$ curl -d '{"requests":["?idsite=1&action_name=publik init&rec=1"]}' http://localhost/matomo/piwik.php
Fichiers
Demandes liées
Révisions associées
matomo: rewrite managing exceptions into tests (#32796)
matomo: manage http status codes (#32796)
matomo: do not abort if simulated first tracking visit fails (#32796)
Historique
Mis à jour par Nicolas Roche il y a presque 5 ans
- Lié à Development #31778: intégration matomo ajouté
Mis à jour par Nicolas Roche il y a presque 5 ans
- Fichier 0001-matomo-simulate-first-tracking-visit-32796.patch 0001-matomo-simulate-first-tracking-visit-32796.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Christophe Siraut il y a presque 5 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Solution validée à En cours
if resp.content != '{"status":"success","tracked":1,"invalid":0}':
Pas de ack là-dessus, trop fragile. Parser le json et regarder status.
Mis à jour par Nicolas Roche il y a presque 5 ans
- Fichier 0001-matomo-rewrite-holding-exceptions-into-tests.patch 0001-matomo-rewrite-holding-exceptions-into-tests.patch ajouté
- Fichier 0002-matomo-simulate-first-tracking-visit-32796.patch 0002-matomo-simulate-first-tracking-visit-32796.patch ajouté
- Statut changé de En cours à Solution proposée
Mis à jour :
- je parse la réponse JSON
- j'en profite pour simplifier la gestion des exceptions dans les tests
désolé, les 2 patchs ne sont pas bien cloisonnés.
Mis à jour par Thomas Noël il y a presque 5 ans
Dans 0001, au lieu du schéma :
with pytest.raises(MatomoError) as exc: matomo.raise_on_error(tree) assert "bla bla" in str(exc)
tu peux faire :
with pytest.raises(MatomoError, match="bla bla"): matomo.raise_on_error(tree)Dans 0002 :
- L'import de json est inutile car la réponse de request contient un json() (donc resp.json()) ; à utiliser à la place de json.loads(resp.content)
- il faut ensuite tester que tree est bien un dictionnaire, puis qu'il contient une clé 'status', le tout directement sans passer par du try/except, genre :
if not isinstance(tree, dict): raise ... if 'status' not in tree: raise ... return True
Sur la fonction ping, la docstring est bizarre, """JSON API here""" ?
Mis à jour par Nicolas Roche il y a presque 5 ans
- Fichier 0001-matomo-simulate-first-tracking-visit-32796.patch 0001-matomo-simulate-first-tracking-visit-32796.patch ajouté
- Fichier 0002-matomo-rewrite-holding-exceptions-into-tests.patch 0002-matomo-rewrite-holding-exceptions-into-tests.patch ajouté
ça rentre petit à petit :
- gestion des exceptions plus compacte dans les tests
- utilisation du parseur JSON inclus dans Request
- j'ai clarifié le commentaire : ici on a une seconde API qui n'a rien à voir avec la précédente.
Mis à jour par Thomas Noël il y a presque 5 ans
- un try/except sur le resp.json()
- quand c'est pas un dict, avoir un message d'erreur qui le dit ("dict expected" un lieu de "JSON expected")
- fait un request.post en utilisant "json=", genre
requests.post(url, json={'requests': ['?idsite=%s&action_name=ping&rec=1' % id_site]})
- gérer le code de retour != 200
- faire un try/except sur le matomo.ping(id_site) : si ça plante, poser un warning sur les messages, qui dit que la configuration est faite mais qu'on n'a pas réussi à simuler une première requête ? (ie ne pas planter complètement l'affaire, quoi)
Voili voilà pour ce round :)
Mis à jour par Nicolas Roche il y a presque 5 ans
- Fichier 0001-matomo-simulate-first-tracking-visit-32796.patch 0001-matomo-simulate-first-tracking-visit-32796.patch ajouté
- Fichier 0002-matomo-rewrite-managing-exceptions-into-tests-32796.patch 0002-matomo-rewrite-managing-exceptions-into-tests-32796.patch ajouté
- Fichier 0003-matomo-manage-http-status-codes-32796.patch 0003-matomo-manage-http-status-codes-32796.patch ajouté
- Fichier 0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch 0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch ajouté
pas encore KO ! Donc avec les remarques ci-dessus :
- révision des try/catch sur le json
- remplacement de data=... par json=... plus approprié ici
- ajout de la gestion des code de retour HTTP
- gestion non bloquante des erreurs sur le ping
Mis à jour par Thomas Noël il y a presque 5 ans
Vu ensemble :
data = '{"requests":["?idsite=%s&action_name=ping&rec=1"]}' % id_site resp = requests.post(url, json=data)
ne passera pas, data doit être le dictionnaire, il sera sérialisé en json automagiquement par requests.
Mis à jour par Nicolas Roche il y a presque 5 ans
- Fichier 0001-matomo-simulate-first-tracking-visit-32796.patch 0001-matomo-simulate-first-tracking-visit-32796.patch ajouté
- Fichier 0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch 0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch ajouté
oups, voici une version mieux testée :
- utilisation d'un dictionnaire avec json=...
- ajout d'un entête pour clarifier l'origine des messages (matomo, ping)
Mis à jour par Nicolas Roche il y a presque 5 ans
- Fichier 0001-matomo-simulate-first-tracking-visit-32796.patch 0001-matomo-simulate-first-tracking-visit-32796.patch ajouté
- Fichier 0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch 0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch ajouté
à nouveau revu et corrigé :
- typo dictionnaire json
- déplacement du ping pour gérer proprement les messages (warning et erreur) au même niveau
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
J'ai supprimé la branche par erreur, repousse.
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Solution proposée à Solution validée
Ok pour moi.
Mis à jour par Nicolas Roche il y a presque 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit eca3d26b3e597d9ef8bae73766ac988c421aaa27 Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Mon May 6 19:56:57 2019 +0200 matomo: do not abort if simulated first tracking visit fails (#32796) commit 811897698184c97a6ae8e3832ea2877a2c68849e Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Mon May 6 18:47:54 2019 +0200 matomo: manage http status codes (#32796) commit a218eef30f02a1111151a774f9bf7ce4fa7c8530 Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Mon May 6 13:44:14 2019 +0200 matomo: rewrite managing exceptions into tests (#32796) commit 3dcdf9552a1da3d4882fa330790bd053281c9ed3 Author: Nicolas Roche <nroche@narval.fr.eu.org> Date: Sun May 5 23:49:10 2019 +0200 matomo: simulate first tracking visit (#32796)
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
matomo: simulate first tracking visit (#32796)