dev

Fetch, API isteklerini almak ve önbelleğe almak için kullanılan bir kitaplıktır. Ayrıca sistem mesajlarını almak ve işlemek için özel destek içerir.

Usage

İçe aktarma

Betiğinizin içindeki Fetch kitaplığını içe aktarmak ve kullanmak için aşağıdakileri kullanın.

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

Yöntemler

Kitaplık, bir parametreyi kabul eden window.dev.fetch yöntemini dışa aktarır. Bu parametre üç şekilde biçimlendirilebilir.

Ad Açıklama Varsayılan Tür
lang Sistem mesajlarının alınacağı dil. Yalnızca messages ile kullanın. wgUserLanguage dize
messages Alınacak sistem mesajları. Bilinmiyor dize veya dizi
process Veriler döndürülmeden önce uygulanması gereken işleme. Bilinmiyor işlev
request API isteği ve yürütülecek geri çağrı. Bilinmiyor işlev
time İsteğin önbelleğe alınması gereken milisaniye cinsinden süre. Bir gün sayı
noCache İsteğin önbelleğe alınması gerekip gerekmediği. Kişisel hata ayıklama amaçları dışında önerilmez. false boole

API isteğini tamamladıktan veya önbelleği aldıktan sonra kitaplık bir söz verir.

Örnekler

Bu tek bir mesaj alır.
mw.hook('dev.fetch').add(function (fetch) {
    fetch('block').then(function (msg) {
        $('.wds-list').append('<li>' + msg + '</li>');
    });
});
Bu birden fazla mesaj alır.
mw.hook('dev.fetch').add(function (fetch) {
    fetch('block|userrights').then(function (msg) {
        $('.wds-list').append('<li>' + msg()[0] + msg('userrights') + '</li>');
    });
});
Bu, iki günlük bir gecikmeyle Almanca olarak birden fazla mesaj alır.
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>');
    });
});
Bu, bir API isteğini yürütür ve önbelleğe alır. request işlevinin, kitaplığın sözünü çözmek için kullanılması gereken iki parametreyi kabul ettiğini unutmayın.
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!');
        }
    });
});

Önbellek

Her önbellek varsayılan olarak bir gün sürer ve ardından güncellenir. Fetch önbelleğinin tamamı da yaklaşık olarak her 100 sayfa yüklemesinde bir düzenli olarak temizlenir. Bu önbelleği atlamak için, her Fetch'ini silecek ve her API isteğini yeniden çalıştıracak olan URL'ye ?debug=1 eklemeniz yeterlidir. Alternatif olarak, aynı şeyi yapacak ve sayfayı yeniden yükleyecek olan Ctrl + F5 veya Ctrl + ⇧ Shift + R klavye komutlarını kullanın. Yalnızca bir betik için önbelleği atlamak için noCache seçeneğini true olarak ayarlamanız yeterlidir.

Bağımlılar

Bu kitaplığı kullanan bağımlıların listesi

Değişklik günlüğü

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