aboutsummaryrefslogtreecommitdiffstats
path: root/notifier/subject_hatelabo_bottle.js
blob: 9c4914dcf379852c7c8b0a98ad0eb84d31e3a011 (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
/**
 * notifier.js plugin subject
 * @name            subject_hatena_bottle.js
 * @description     notify if hatena bottle changed.
 * @description-ja  はてなボトルの変更通知。
 * @author          suVene suvene@zeromemory.info
 * @version         0.1.0
 * Last Change:     08-Dec-2008.
 */
(function() {

var notifier = liberator.plugins.notifier;
if (!notifier) return;

var libly = notifier.libly;
var $U = libly.$U;
var logger = $U.getLogger('subject_hatelabo_bottle');

var URL = 'http://bottle.hatelabo.jp';

notifier.subject.register({
    interval: 30,
    initialize: function() {
        this.count = 0;
        this.initialized = false;
        this.cache;

        var req = new libly.Request(URL);
        req.addEventListener('onSuccess', $U.bind(this, function(res) {
            logger.log('initialized');
            this.cache = this.parse(res);
            if (this.cache)
                this.initialized = true;
        }));
        req.get();
    },
    parse: function(res) {

        var ret, dom;

        if (!res.isSuccess() || res.responseText == '') return ret;

        dom = res.getHTMLDocument('id("body")//div[contains(concat(" ", @class, " "), " entry ")]');
        if (!dom) return ret;

        ret = [];
        for (let i = 0, len < dom.childNodes.length; i < len; i++) {
            ret.push(dom.childNodes[i]);
        }

        return ret;
    },
    check: function() {

        if (!this.initialized) return;

        this.count++;
        logger.log('check');
        var req = new libly.Request(URL);
        req.addEventListener('onSuccess', $U.bind(this, function(res) {
            var text = res.responseText;
            logger.log('success!! ');
            var message = new notifier.Message('TEST', text);
            this.notify(message);

            if (this.count == 5) {
                notifier.subject.unregister(this);
                this.count = 0;
            }
        }));
        req.get();
    }
});

})();
// vim: set fdm=marker sw=4 ts=4 sts=0 et: