annotate mod_pubsub_twitter/mod_pubsub_twitter.lua @ 5405:c7a5caad28ef

mod_http_oauth2: Enforce response type encoded in client_id The client promises to only use this response type, so we should hold them to that. This makes it fail earlier if the response type is disabled or the client is trying to use one that it promised not to use. Better than failing after login and consent.
author Kim Alvefur <zash@zash.se>
date Tue, 02 May 2023 16:31:25 +0200
parents 7dbde05b48a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
945
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 -- Publishes Twitter search results over pubsub
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 --
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 -- Config:
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 -- Component "pubsub.example.com" "pubsub"
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 -- modules_enabled = {
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 -- "pubsub_twitter";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 -- }
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 -- twitter_searches = { -- node -> query
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 -- prosody = "prosody xmpp";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 -- }
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 -- twitter_pull_interval = 20 -- minutes
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 978
diff changeset
12 --
945
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 local pubsub = module:depends"pubsub";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 local json = require "util.json";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 local http = require "net.http";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 local set = require "util.set";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 local it = require "util.iterators";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 local array = require "util.array";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 local st = require "util.stanza";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 --local dump = require"util.serialization".serialize;
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 local xmlns_atom = "http://www.w3.org/2005/Atom";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 local twitter_searches = module:get_option("twitter_searches", {});
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 local refresh_interval = module:get_option_number("twitter_pull_interval", 20) * 60;
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 local api_url = module:get_option_string("twitter_search_url", "http://search.twitter.com/search.json");
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 local month_number = {
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 Jan = "01", Feb = "02", Mar = "03";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 Apr = "04", May = "05", Jun = "06";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 Jul = "07", Aug = "08", Sep = "09";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 Oct = "10", Nov = "11", Dec = "12";
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 };
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 local active_searches = {};
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 local function publish_result(search_name, result)
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 local node, id = search_name, result.id_str;
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 --"Tue, 02 Apr 2013 15:40:54 +0000"
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 978
diff changeset
43 local timestamp_date, timestamp_month, timestamp_year, timestamp_time =
945
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 result.created_at:match(" (%d+) (%a+) (%d+) (%d%d:%d%d:%d%d)");
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 978
diff changeset
45
945
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 local timestamp = ("%s-%s-%sT%sZ"):format(timestamp_year, month_number[timestamp_month], timestamp_date, timestamp_time);
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 978
diff changeset
47
978
c8f4502c764f mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents: 945
diff changeset
48 local item = st.stanza("item", { xmlns = "http://jabber.org/protocol/pubsub", id = id })
c8f4502c764f mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents: 945
diff changeset
49 :tag("entry", { xmlns = xmlns_atom })
c8f4502c764f mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents: 945
diff changeset
50 :tag("id"):text(id):up()
c8f4502c764f mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents: 945
diff changeset
51 :tag("author")
c8f4502c764f mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents: 945
diff changeset
52 :tag("name"):text(result.from_user_name.." (@"..result.from_user..")"):up()
c8f4502c764f mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents: 945
diff changeset
53 :tag("uri"):text("http://twitter.com/"..result.from_user):up()
c8f4502c764f mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents: 945
diff changeset
54 :up()
c8f4502c764f mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents: 945
diff changeset
55 :tag("published"):text(timestamp):up()
c8f4502c764f mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents: 945
diff changeset
56 :tag("title"):text(result.text):up()
c8f4502c764f mod_pubsub_twitter: Wrap published item in an <item> element for pubsub
Matthew Wild <mwild1@gmail.com>
parents: 945
diff changeset
57 :tag("link", { rel = "alternate" , href = "https://twitter.com/"..result.from_user.."/status/"..id}):up();
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 978
diff changeset
58
945
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
59 module:log("debug", "Publishing Twitter result: %s", tostring(item));
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 978
diff changeset
60
945
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
61 local ok, err = pubsub.service:publish(node, true, id, item);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
62 if not ok then
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
63 if err == "item-not-found" then -- try again
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
64 local ok, err = pubsub.service:create(node, true);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
65 if not ok then
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
66 module:log("error", "could not create node %s: %s", node, err);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
67 return;
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
68 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
69 local ok, err = pubsub.service:publish(node, true, id, item);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
70 if not ok then
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
71 module:log("error", "could not create or publish node %s: %s", node, err);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
72 return
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
73 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
74 else
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
75 module:log("error", "publishing %s failed: %s", node, err);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
76 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
77 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
78 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
79
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
80 local function is_retweet(tweet)
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
81 return not not tweet.text:match("^RT ");
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
82 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
83
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 function update_all()
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85 module:log("debug", "Updating all searches");
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
86 for name, search in pairs(active_searches) do
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 module:log("debug", "Fetching new results for '%s'", name);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
88 http.request(search.refresh_url or search.url, nil, function (result_json, code)
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
89 if code ~= 200 then
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90 module:log("warn", "Twitter search query '%s' failed with code %d", name, code);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 return;
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
93 local response = json.decode(result_json);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
94 module:log("debug", "Processing %d results for %s", #response.results, name);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
95 search.refresh_url = api_url..response.refresh_url;
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
96 for _, result in ipairs(response.results) do
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
97 if not is_retweet(result) then
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
98 publish_result(name, result);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
99 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
100 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
101 end);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
102 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
103 return refresh_interval;
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
104 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
105
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
106 function module.load()
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
107 local config_searches = set.new(array.collect(it.keys(twitter_searches)));
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
108 local current_searches = set.new(array.collect(it.keys(active_searches)));
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 978
diff changeset
109
945
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
110 local disable_searches = current_searches - config_searches;
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
111 local new_searches = config_searches - current_searches;
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 978
diff changeset
112
945
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
113 for search_name in disable_searches do
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
114 module:log("debug", "Disabled old Twitter search '%s'", search_name);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
115 active_searches[search_name] = nil;
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
116 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
117
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
118 for search_name in new_searches do
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
119 module:log("debug", "Created new Twitter search '%s'", search_name);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
120 local query = twitter_searches[search_name];
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
121 active_searches[search_name] = {
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
122 url = api_url.."?q="..http.urlencode(query);
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
123 };
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
124 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
125 end
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
126
dbcbcec37d24 mod_pubsub_twitter: Plugin to subscribe (poll) to Twitter search queries, and announce matching tweets over pubsub
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
127 module:add_timer(5, update_all);