Fandom Developers Wiki

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 :

  • Dans le cas d'une chaîne de caractères, la librairie récupérera le message et le mettra sous forme d'une chaîne de caractères. Si cette chaîne contient plusieurs messages séparés par des | (exemple : block|userrights), la librairie récupèrera chaque message et les retournera sous forme de fonction. Invoquer la fonction sans paramètre retournera un objet contenant l'ensemble des messages, alors que donner le paramètre donne la valeur de cette clé dans l'objet ; la clé pouvant être soit le nom du message soit son index.
  • Dans le cas d'un tableau, elle récupèrera les messages spécifiés et les redonnera sous forme de fonction invoquable (voir ci-dessus).
  • Dans le cas d'un objet, il peut avoir les propriétés suivantes, toutes optionnelles :
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