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
requestaccepte 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[]
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 |