Projet

Général

Profil

Development #32796

matomo: générer une première visite depuis hobo au moment de la création de l'instance matomo

Ajouté par Nicolas Roche il y a presque 5 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
05 mai 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

0001-matomo-simulate-first-tracking-visit-32796.patch (6,01 ko) 0001-matomo-simulate-first-tracking-visit-32796.patch Nicolas Roche, 06 mai 2019 00:03
0002-matomo-simulate-first-tracking-visit-32796.patch (7,23 ko) 0002-matomo-simulate-first-tracking-visit-32796.patch Nicolas Roche, 06 mai 2019 14:09
0001-matomo-rewrite-holding-exceptions-into-tests.patch (12,1 ko) 0001-matomo-rewrite-holding-exceptions-into-tests.patch Nicolas Roche, 06 mai 2019 14:09
0001-matomo-simulate-first-tracking-visit-32796.patch (11,3 ko) 0001-matomo-simulate-first-tracking-visit-32796.patch Nicolas Roche, 06 mai 2019 17:19
0002-matomo-rewrite-holding-exceptions-into-tests.patch (12,3 ko) 0002-matomo-rewrite-holding-exceptions-into-tests.patch Nicolas Roche, 06 mai 2019 17:19
0001-matomo-simulate-first-tracking-visit-32796.patch (11,8 ko) 0001-matomo-simulate-first-tracking-visit-32796.patch Nicolas Roche, 06 mai 2019 21:00
0002-matomo-rewrite-managing-exceptions-into-tests-32796.patch (12,5 ko) 0002-matomo-rewrite-managing-exceptions-into-tests-32796.patch Nicolas Roche, 06 mai 2019 21:00
0003-matomo-manage-http-status-codes-32796.patch (5,23 ko) 0003-matomo-manage-http-status-codes-32796.patch Nicolas Roche, 06 mai 2019 21:00
0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch (7,77 ko) 0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch Nicolas Roche, 06 mai 2019 21:00
0001-matomo-simulate-first-tracking-visit-32796.patch (11,8 ko) 0001-matomo-simulate-first-tracking-visit-32796.patch Nicolas Roche, 07 mai 2019 10:06
0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch (8,59 ko) 0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch Nicolas Roche, 07 mai 2019 10:06
0001-matomo-simulate-first-tracking-visit-32796.patch (11,6 ko) 0001-matomo-simulate-first-tracking-visit-32796.patch Nicolas Roche, 07 mai 2019 11:28
0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch (10,8 ko) 0004-matomo-do-not-abort-if-simulated-first-tracking-visi.patch Nicolas Roche, 07 mai 2019 11:28

Demandes liées

Lié à Hobo - Development #31778: intégration matomoFermé27 mars 2019

Actions

Révisions associées

Révision 3dcdf955 (diff)
Ajouté par Nicolas Roche il y a presque 5 ans

matomo: simulate first tracking visit (#32796)

Révision a218eef3 (diff)
Ajouté par Nicolas Roche il y a presque 5 ans

matomo: rewrite managing exceptions into tests (#32796)

Révision 81189769 (diff)
Ajouté par Nicolas Roche il y a presque 5 ans

matomo: manage http status codes (#32796)

Révision eca3d26b (diff)
Ajouté par Nicolas Roche il y a presque 5 ans

matomo: do not abort if simulated first tracking visit fails (#32796)

Historique

#2

Mis à jour par Nicolas Roche il y a presque 5 ans

#3

Mis à jour par Nicolas Roche il y a presque 5 ans

#4

Mis à jour par Christophe Siraut il y a presque 5 ans

  • Statut changé de Solution proposée à Solution validée
#5

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.

#6

Mis à jour par Nicolas Roche il y a presque 5 ans

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.

#7

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""" ?

#8

Mis à jour par Nicolas Roche il y a presque 5 ans

ç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.

#9

Mis à jour par Thomas Noël il y a presque 5 ans

Il faut
  • 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 :)

#10

Mis à jour par Nicolas Roche il y a presque 5 ans

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

#11

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.

#12

Mis à jour par Nicolas Roche il y a presque 5 ans

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)

#13

Mis à jour par Nicolas Roche il y a presque 5 ans

à nouveau revu et corrigé :
- typo dictionnaire json
- déplacement du ping pour gérer proprement les messages (warning et erreur) au même niveau

#14

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

J'ai supprimé la branche par erreur, repousse.

#15

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.

#16

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)

#17

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

Formats disponibles : Atom PDF