web-dev-qa-db-fra.com

Comment gérer un webhook GitHub POST demande?

J'aimerais commencer par dire que je ne savais pas si c'était le bon endroit pour poser cette question, alors si ce n'est pas le cas, veuillez me diriger dans la bonne direction.

D'accord, j'ai un lien Web GitHub qui se déclenche chaque fois qu'il y a un commentaire de validation et je ne vois pas comment le gérer sur mon site Web Wordpress. Je n'entrerai pas dans les détails de ce que je veux en faire, car je dois d'abord recevoir une réponse de la part de Webhook.

Dans les paramètres Webhook de GitHub, je règle l'URL de charge utile sur mywpsite.com/github.php, où github.php est un fichier que j'ai créé pour gérer la demande. J'ai essayé de voir si je recevais réellement quelque chose en faisant

if(!empty($_POST)) {
                echo "There is something here!";
                echo "</br>";

                function printArray($array){
                    foreach ($array as $key => $value){
                        echo "$key => $value";
                        if(is_array($value)){ //If $value is an array, print it as well!
                            printArray($value);
                        }  
                    } 
                }

                printArray($_POST);
} else {
    echo "There is nothing here :(";
} ?>

mais je reçois toujours There is nothing here :(, ce qui signifie que je reçois toujours un tableau vide. GitHub dit que le Webhook a été envoyé avec succès et peu importe le nombre de fois que je le renvoie à nouveau, je ne reçois rien.

J'ai trouvé cette question dans Stack Overflow pose essentiellement la même question mais pour Java. Malheureusement, je ne connais pas assez de Java pour traduire la réponse. J'ai également vu plusieurs outils pour gérer les Webhooks GitHub, mais aucun ne suppose une utilisation avec WordPress.

Toutes les idées seront grandement appréciées. Merci.

2
jetgo

Tout d'abord, vous semblez avoir mal compris comment PHP traite la demande entrante POST. Il n'existe que dans cette instance que webhook fait une demande. Si vous chargez cette page dans un navigateur, il n'y aura pas de données POST, sauf si vous en envoyez.

Pour vérifier correctement que la demande a bien été reçue, vous devez journaliser les résultats de ce fichier et vérifier le fichier avant et après le ping Webhook.

Deuxièmement, vous ne faites pas encore cela "dans" WordPress. La création de vos propres fichiers PHP en tant que points de terminaison dans l'installation de WP est une technique problématique qui est rarement utilisée.

Si vous voulez bien intégrer cela dans l'installation de WP, vous devez utiliser les noeuds finaux natifs appropriés et les API WP pour le gérer. Pour POST demandes, une option d’ajustement sémantique serait wp-admin/admin-post.php. Cependant, si vous ne pouvez pas personnaliser la charge à distance (définissez le paramètre action) et utilisez les crochets d'adaptation, vous devrez effectuer votre propre vérification du contexte.

1
Rarst