Thu, 23 Mar 2023 18:56:32 +0000
component: Avoid adding to the global stream metatable
This allows component and client connections to be made side-by-side.
Previous to this change, loading this connection module would break the
ability to make client connections, due to overriding stream methods such as
:reopen() and :reset().
A next step would be to share the methods that the two connection modules have
in common.
403
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 | local verse = require "verse"; |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 | |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 | local xmlns_browsing = "urn:xmpp:browsing:0"; |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 | |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 | function verse.plugins.browsing(stream) |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 | stream:add_plugin("pep"); |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 | function stream:browsing(infos, callback) |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 | if type(infos) == "string" then |
466 | 9 | infos = {uri = infos}; |
403
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 | end |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 | |
466 | 12 | local link = verse.stanza("page", {xmlns = xmlns_browsing}) |
403
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 | for info, value in pairs(infos) do |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 | link:tag(info):text(value):up(); |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 | end |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 | return stream:publish_pep(link, callback); |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 | end |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 | |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 | stream:hook_pep(xmlns_browsing, function(event) |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 | local item = event.item; |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 | return stream:event("browsing", { |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 | from = event.from; |
466 | 23 | description = item:get_child_text "description"; |
24 | keywords = item:get_child_text "keywords"; | |
25 | title = item:get_child_text "title"; | |
26 | uri = item:get_child_text "uri"; | |
403
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 | }); |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 | end); |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 | end |
6f4f60ebb796
Add plugin for XEP-0195: User Browsing
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 |