dev

Fetch es una biblioteca para obtener y almacenar en caché solicitudes de API. También incluye soporte especial para obtener y procesar mensajes del sistema.

Usage

Importando

Para importar y usar la biblioteca Fetch dentro de su script, use lo siguiente.

mw.hook('dev.fetch').add(function (fetch) {
    // su código aquí
});
importArticle({
    type: 'script',
    article: 'u:dev:MediaWiki:Fetch.js'
});

Métodos

La biblioteca exporta el método window.dev.fetch, que acepta un parámetro. Este parámetro puede formatearse de tres formas.

Nombre Descripción Defecto Tipo
lang El idioma para recibir los mensajes del sistema. Usar solo con messages. wgUserLanguage cadena
messages Los mensajes del sistema para obtener. N/A cadena o array
process Procesamiento que debe aplicarse a los datos antes de que se devuelvan. N/A Función
request La solicitud de API y la devolución de llamada para ejecutar. N/A Función
time El tiempo, en milisegundos, durante el que se debe almacenar en caché la solicitud. Un día numero
noCache Si la solicitud debe almacenarse en caché. No se recomienda excepto para fines de depuración personal. false Booleano

Después de completar la solicitud de API o recuperar la caché, la biblioteca devuelve una promesa.

Ejemplos

Esto recibe un solo mensaje.
mw.hook('dev.fetch').add(function (fetch) {
    fetch('block').then(function (msg) {
        $('.wds-list').append('<li>' + msg + '</li>');
    });
});
Esto recibe varios mensajes.
mw.hook('dev.fetch').add(function (fetch) {
    fetch('block|userrights').then(function (msg) {
        $('.wds-list').append('<li>' + msg()[0] + msg('userrights') + '</li>');
    });
});
Esto recibe varios mensajes en alemán con un retraso de dos días.
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>');
    });
});
Esto ejecuta y almacena en caché una solicitud de API. Tenga en cuenta que la función request acepta dos parámetros, que deben usarse para resolver la promesa de la biblioteca.
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!');
        }
    });
});

Caché

Cada caché, de forma predeterminada, dura un día, después del cual se actualiza. La caché completa de Fetch también se borra regularmente aproximadamente cada 100 cargas de página. Para omitir esta caché, simplemente agregue ?debug=1 a la URL, que eliminará todos los elementos de Fetch y volverá a ejecutar todas las solicitudes de API. Alternativamente, use los comandos del teclado Ctrl + F5 o Ctrl + ⇧ Shift + R, que harán lo mismo y volverán a cargar la página. Para omitir la caché para un solo script, simplemente configure la opción noCache en true.

Dependents

List of dependents using this library

Registro de cambios

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