aboutsummaryrefslogtreecommitdiff
path: root/cs.js
blob: e57176bf7c44e607a95052b054763fd5d2fff249 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var base_url = undefined
let formats = ["Atom", "Mrss", "Html"]
let types = {
    'application/rss+xml': "rss",
    'application/atom+xml': "atom",
    'application/rdf+xml': "rdf",
    'application/rss': "rss",
    'application/atom': "atom",
    'application/rdf': "rdf",
    'text/rss+xml': "rss",
    'text/atom+xml': "atom",
    'text/rdf+xml': "rdf",
    'text/rss': "rss",
    'text/atom': "atom",
    'text/rdf': "rdf"
}


function find_links_in_page() {
    let links = document.querySelectorAll('link[type]');
    let feeds = [];
    for (let i = 0; i < links.length; i++) {
        if (links[i].hasAttribute('type') && links[i].getAttribute('type') in types) {
            let title = links[i].getAttribute('title')
            let href = links[i].getAttribute('href')
            let feed_url = new URL(href, window.location.href).href
            let type = types[links[i].getAttribute('type')]
            let feed = {
                type: `native: ${title || type}`,
                url: feed_url,
            };
            feeds.push(feed);
        }
    }
    return feeds
}

function get_all_types(feed_url, note) {
    let feeds = [];
    formats.forEach(el => {
        if(note){
            feeds.push({
                type: `rss-bridge (${note}): ${el}`,
                url: feed_url + el
            });
        } else {
            feeds.push({
                type: `rss-bridge: ${el}`,
                url: feed_url + el
            });
        }
    })
    return feeds;
}

let objs = []

async function get_feed_urls() {
    let settings = await browser.storage.sync.get("rb");
    base_url = settings.rb;
    let all_feed_urls = []
    let host = window.location.host;
    for (const obj of objs) {
        for (const obj_host of obj.hosts) {
            if (host.includes(obj_host)) {
                result = await obj.callback()
                all_feed_urls = all_feed_urls.concat(result)
                break
            }
        }
    }
    all_feed_urls = all_feed_urls.concat(find_links_in_page())
    return all_feed_urls
}

function register(hosts, callback) {
    objs.push({hosts, callback})
}

register(["instagram"], get_insta)
register(["twitter"], get_twitter)
register(["youtube"], get_youtube)

browser.runtime.onMessage.addListener(function (msg, sender) {
    return Promise.resolve(get_feed_urls());
})