dev

Fetch est une librairie utilisée pour rechercher, mettre en cache et donner des messages système, tout en facilitant le processus.

Usage

Importation

Pour importer et utiliser la librairie Fetch dans le script utilisateur, il suffit d'utiliser le code suivant:

mw.hook('dev.fetch').add(function (fetch) {
    // votre code ici
});
importArticle({
    type: 'script',
    article: 'u:dev:MediaWiki:Fetch.js'
});

Méthodes

La librairie exporte la fonction window.dev.fetch, acceptant un paramètre pouvant être formaté de trois façons différentes :

Nom Description Valeurs par défaut Type
lang La langue des messages système. À n'utiliser qu'avec messages. wgUserLanguage chaîne de caractères
messages Les messages système à récupérer Aucun chaîne de caractères ou tableau
process Processus à appliquer aux données avant de les redonner. Aucun fonction
request Requête API et son rappel à exécuter. Aucun fonction
time Temps en millisecondes, pour laquelle la requête doit être conservée dans le cache. 1 jour nombre
noCache S'il faut mettre en cache la requête. Non recommandé en dehors d'un but personnel de débogage. false Booléen

Après la fin de la requête API ou la récupération du cache, la librairie retourne une espérance.

Exemples

TCe code permet d'obtenir un seul message.
mw.hook('dev.fetch').add(function (fetch) {
    fetch('block').then(function (msg) {
        $('.wds-list').append('<li>' + msg + '</li>');
    });
});
Ce code permet d'obtenir plusieurs messages.
mw.hook('dev.fetch').add(function (fetch) {
    fetch('block|userrights').then(function (msg) {
        $('.wds-list').append('<li>' + msg()[0] + msg('userrights') + '</li>');
    });
});
Ce code permet d'obtenir plusieurs messages en Allemand sous un délai de deux jours.
mw.hook('dev.fetch').add(function (fetch) {
    fetch({
        lang: 'de',
        messages: ['block', 'userrights'],
        time: 2 * 24 * 60 * 60 * 1000
    }).then(function (msg) {
        $('.wds-list').append('<li>' + msg('block') + msg()[1] + '</li>');
    });
});
Ce code exécute et met en cache une requête API. À prendre en note que la fonction request accepte deux paramètres, utilisés pour résoudre l'espérance de la librairie.
mw.hook('dev.fetch').add(function (fetch) {
    fetch({
        request: function (resolve, reject) {
            new mw.Api().get({
                action: 'query',
                titles: 'MediaWiki:ImportJS'
            }).done(function (d) {
                if (d.error) {
                    reject(d.error.code);
                } else {
                    resolve(d.query.pages);
                }
            }).fail(function () {
                reject();
            });
        },
        name: 'PageExists'
    }).then(function (d) {
        if (!d[-1]) {
            console.log('MediaWiki:ImportJS exists!');
        }
    });
});

Cache

Chaque cache, par défaut, est valable une journée, après quoi il se met à jour. Le cache entier du script se vide environ tous les 100 chargements de page. Pour passer outre ce cache, il suffit d'ajouter à l'URL ?debug=1 , ce qui supprimera tout objet du script et refera une demande API. Une autre solution est de faire Ctrl + F5 ou Ctrl + ⇧ Shift + R afin de rafraîchir la page. Pour passer outre le cache juste pour un script, il suffit d'indiquer true comme valeur de l'option noCache.

Dependents

List of dependents using this library

Changelog

Version Date Description Author
1.0 March 25, 2019 Initial revision. TheGoldenPatrik1
1.1 April 2, 2019 Cache messages. TheGoldenPatrik1
1.2 September 17, 2019 Return a promise, cache API requests, add more parameters, support cache clearing. TheGoldenPatrik1