diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2023-09-08 17:07:24 +0200 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2023-09-16 13:00:03 +0200 |
commit | 83dcb84ea62f3bb7479a7fad88bbccedcc2cc8a6 (patch) | |
tree | 7a0d8256643fd24a691e04dbde42ed8611e0e868 /doc/fr/weechat_plugin_api.fr.adoc | |
parent | fb00bc1f4b9ede63153cf55ceb38d0fdcb39786c (diff) | |
download | weechat-83dcb84ea62f3bb7479a7fad88bbccedcc2cc8a6.zip |
doc/api: add function hook_url
Diffstat (limited to 'doc/fr/weechat_plugin_api.fr.adoc')
-rw-r--r-- | doc/fr/weechat_plugin_api.fr.adoc | 157 |
1 files changed, 155 insertions, 2 deletions
diff --git a/doc/fr/weechat_plugin_api.fr.adoc b/doc/fr/weechat_plugin_api.fr.adoc index cd4bdc33f..b50d0d1ce 100644 --- a/doc/fr/weechat_plugin_api.fr.adoc +++ b/doc/fr/weechat_plugin_api.fr.adoc @@ -10207,7 +10207,6 @@ struct t_hook *weechat_hook_process (const char *command, void *callback_data); ---- - Paramètres : * _command_ : commande à lancer dans le processus fils, URL _(WeeChat ≥ 0.3.7)_ @@ -10441,7 +10440,7 @@ struct t_hook *weechat_hook_process_hashtable (const char *command, Les paramètres sont les mêmes que ceux de la fonction <<_hook_process,hook_process>>, avec un paramètre supplémentaire : -* _options_ : options pour la commande exécutée; la table de hachage est +* _options_ : options pour la commande exécutée ; la table de hachage est dupliquée dans la fonction, donc il est possible de la supprimer après cet appel @@ -10649,6 +10648,160 @@ hook4 = weechat.hook_process_hashtable("sh", 20000, "my_process_cb", "") ---- +==== hook_url + +_WeeChat ≥ 4.1.0._ + +Transfert d'URL. + +Prototype : + +[source,c] +---- +struct t_hook *weechat_hook_url (const char *url, + struct t_hashtable *options, + int timeout, + int (*callback)(const void *pointer, + void *data, + const char *url, + struct t_hashtable *options, + struct t_hashtable *output), + const void *callback_pointer, + void *callback_data); +---- + +Paramètres : + +* _url_ : URL +* _options_ : options pour le transfert d'URL (voir ci-dessous) ; la table de + hachage est dupliquée dans la fonction, donc il est possible de la supprimer + après cet appel +* _timeout_ : timeout pour le transfert d'URL (en millisecondes) : après de délai, + le transfert est stoppé (0 signifie pas de limite) +* _callback_ : fonction appelée lorsque le transfert est terminé, paramètres et + valeur de retour : +** _const void *pointer_ : pointeur +** _void *data_ : pointeur +** _const char *url_ : URL +** _struct t_hashtable *options_ : options +** _struct t_hashtable *output_ : résultat (les clés et valeurs sont des chaînes), + qui peut contenir les clés suivantes : +*** _response_code_ : code réponse HTTP +*** _headers_ : en-têtes HTTP dans la réponse +*** _output_ : sortie standard (défini seulement si _file_out_ n'était pas défini + dans les options) +*** _error_ : message d'erreur (défini seulement en cas d'erreur) +** valeur de retour : +*** _WEECHAT_RC_OK_ +*** _WEECHAT_RC_ERROR_ +* _callback_pointer_ : pointeur donné à la fonction de rappel lorsqu'elle est + appelée par WeeChat +* _callback_data_ : pointeur donné à la fonction de rappel lorsqu'elle est + appelée par WeeChat; si non NULL, doit avoir été alloué par malloc (ou une + fonction similaire) et est automatiquement libéré (par free) lorsque le + "hook" est supprimé + +Les options Curl suivantes sont disponibles (voir `+man curl_easy_setopt+` pour +une description de chaque option) : + +include::{autogendir}/autogen_api_url_options.fr.adoc[tag=url_options] + +[NOTE] +^(1)^ Pour les options avec le type "mask", le format est : +"value1+value2+value3" ; +pour les options avec le type "list", les éléments de la liste doivent être +séparés par un retour à la ligne (`\n`). + +^(2)^ Lorsque des constantes sont disponibles, elles doivent être utilisées +comme valeur pour l'option. + +Ces deux options supplémentaires (chaînes) sont autorisées, pour le fichier en +entrée/sortie : + +* _file_in_ : fichier à lire pour envoyer avec l'URL (envoi de fichier "post") +* _file_out_ : écrire l'URL/fichier dans ce fichier (au lieu de la sortie + standard) + +Valeur de retour : + +* pointeur vers le nouveau "hook", NULL en cas d'erreur + +Exemple en C : + +[source,c] +---- +int +my_url_cb (const void *pointer, void *data, const char *url, + struct t_hashtable *options, struct t_hashtable *output) +{ + weechat_printf (NULL, "response_code : %s", weechat_hashtable_get (output, "response_code")); + weechat_printf (NULL, "headers : %s", weechat_hashtable_get (output, "headers")); + weechat_printf (NULL, "output : %s", weechat_hashtable_get (output, "output")); + weechat_printf (NULL, "error : %s", weechat_hashtable_get (output, "error")); + return WEECHAT_RC_OK; +} + +/* example 1: sortie dans un fichier */ +struct t_hashtable *options_url1 = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +if (options_url1) +{ + weechat_hashtable_set (options_url1, "file_out", "/tmp/weechat.org.html"); + struct t_hook *my_url_hook = weechat_hook_url ("https://weechat.org/", + options_url1, + 20000, + &my_url_cb, NULL, NULL); + weechat_hashtable_free (options_url1); +} + +/* example 2: en-têtes HTTP personnalisés, sortie envoyée à la fonction de rappel */ +struct t_hashtable *options_url2 = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +if (options_url2) +{ + weechat_hashtable_set (options_url2, "httpheader", + "Header1: valeur1\n" + "Header2: valeur2"); + struct t_hook *my_url_hook = weechat_hook_url ("http://localhost:8080/", + options_url2, + 20000, + &my_url_cb, NULL, NULL); + weechat_hashtable_free (options_url2); +} +---- + +Script (Python) : + +[source,python] +---- +# prototype +def hook_url(url: str, options: Dict[str, str], timeout: int, callback: str, callback_data: str) -> str: ... + +# exemple +def my_url_cb(data: str, url: str, options: Dict[str, str], output: Dict[str, str]) -> int: + weechat.prnt("", "output: %s" % output) + return weechat.WEECHAT_RC_OK + +# exemple 1 : sortie dans un fichier +hook1 = weechat.hook_url("https://weechat.org/", + {"file_out": "/tmp/weechat.org.html"}, + 20000, "my_url_cb", "") + +# exemple 2 : en-têtes HTTP personnalisés, sortie envoyée à la fonction de rappel +options = { + "httpheader": "\n".join([ + "Header1: valeur1", + "Header2: valeur2", + ]), +} +hook2 = weechat.hook_url("http://localhost:8080/", options, 20000, "my_url_cb", "") +---- + ==== hook_connect _Mis à jour dans la 1.5, 2.0._ |