view content_scripts/feed-probe.js @ 70:e405ff21ab31 version-14

Release version 14
author Guido Berhoerster <guido+feed-preview@berhoerster.name>
date Sun, 03 Mar 2024 18:12:27 +0100
parents ede87e1004f9
children
line wrap: on
line source

/*
 * Copyright (C) 2018 Guido Berhoerster <guido+feed-preview@berhoerster.name>
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

'use strict';

function getFeeds() {
    let urlsFeeds = new Map();
    let elements = document.querySelectorAll(':-moz-any(link, a)[href]' +
            '[rel~=alternate]:-moz-any([type="application/atom+xml"], ' +
            '[type="application/rss+xml"])');

    for (let element of elements) {
        if (element.href === document.URL) {
            // do not indicate the availability of a feed if the current
            // document is already a feed preview
            continue;
        }

        if (!element.href.match(/^https?:\/\//)) {
            continue;
        }

        urlsFeeds.set(element.href, {
            href: element.href,
            title: element.title || browser.i18n.getMessage('defaultFeedTitle'),
            type: element.type
        });
    }

    return Array.from(urlsFeeds.values());
}

browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
    // background page querying available feeds
    sendResponse(getFeeds());
});