Mercurial > prosody-modules
annotate mod_pubsub_twitter/mod_pubsub_twitter.lua @ 6082:1a6cd0bbb7ab
mod_compliance_2023: Add 2023 Version of the compliance module, basis is the 2021 Version.
diff --git a/mod_compliance_2023/README.md b/mod_compliance_2023/README.md
new file mode 100644
--- /dev/null
+++ b/mod_compliance_2023/README.md
@@ -0,0 +1,22 @@
+---
+summary: XMPP Compliance Suites 2023 self-test
+labels:
+- Stage-Beta
+rockspec:
+ dependencies:
+ - mod_cloud_notify
+
+...
+
+Compare the list of enabled modules with
+[XEP-0479: XMPP Compliance Suites 2023] and produce basic report to the
+Prosody log file.
+
+If installed with the Prosody plugin installer then all modules needed for a green checkmark should be included. (With prosody 0.12 only [mod_cloud_notify] is not included with prosody and we need the community module)
+
+# Compatibility
+
+ Prosody-Version Status
+ --------------- ----------------------
+ trunk Works as of 2024-12-21
+ 0.12 Works
diff --git a/mod_compliance_2023/mod_compliance_2023.lua b/mod_compliance_2023/mod_compliance_2023.lua
new file mode 100644
--- /dev/null
+++ b/mod_compliance_2023/mod_compliance_2023.lua
@@ -0,0 +1,79 @@
+-- Copyright (c) 2021 Kim Alvefur
+--
+-- This module is MIT licensed.
+
+local hostmanager = require "core.hostmanager";
+
+local array = require "util.array";
+local set = require "util.set";
+
+local modules_enabled = module:get_option_inherited_set("modules_enabled");
+
+for host in pairs(hostmanager.get_children(module.host)) do
+ local component = module:context(host):get_option_string("component_module");
+ if component then
+ modules_enabled:add(component);
+ modules_enabled:include(module:context(host):get_option_set("modules_enabled", {}));
+ end
+end
+
+local function check(suggested, alternate, ...)
+ if set.intersection(modules_enabled, set.new({suggested; alternate; ...})):empty() then return suggested; end
+ return false;
+end
+
+local compliance = {
+ array {"Server"; check("tls"); check("disco")};
+
+ array {"Advanced Server"; check("pep", "pep_simple")};
+
+ array {"Web"; check("bosh"); check("websocket")};
+
+ -- No Server requirements for Advanced Web
+
+ array {"IM"; check("vcard_legacy", "vcard"); check("carbons"); check("http_file_share", "http_upload")};
+
+ array {
+ "Advanced IM";
+ check("vcard_legacy", "vcard");
+ check("blocklist");
+ check("muc");
+ check("private");
+ check("smacks");
+ check("mam");
+ check("bookmarks");
+ };
+
+ array {"Mobile"; check("smacks"); check("csi_simple", "csi_battery_saver")};
+
+ array {"Advanced Mobile"; check("cloud_notify")};
+
+ array {"A/V Calling"; check("turn_external", "external_services", "turncredentials", "extdisco")};
+
+};
+
+function check_compliance()
+ local compliant = true;
+ for _, suite in ipairs(compliance) do
+ local section = suite:pop(1);
+ if module:get_option_boolean("compliance_" .. section:lower():gsub("%A", "_"), true) then
+ local missing = set.new(suite:filter(function(m) return type(m) == "string" end):map(function(m) return "mod_" .. m end));
+ if suite[1] then
+ if compliant then
+ compliant = false;
+ module:log("warn", "Missing some modules for XMPP Compliance 2023");
+ end
+ module:log("info", "%s Compliance: %s", section, missing);
+ end
+ end
+ end
+
+ if compliant then module:log("info", "XMPP Compliance 2023: Compliant ✔️"); end
+end
+
+if prosody.start_time then
+ check_compliance()
+else
+ module:hook_global("server-started", check_compliance);
+end
+
| author | Menel <menel@snikket.de> |
|---|---|
| date | Sun, 22 Dec 2024 16:06:28 +0100 |
| parents | 7dbde05b48a9 |
| children | 764ec0c94b85 |
| 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); |
