Software /
code /
prosody-modules
Annotate
mod_pubsub_post/README.md @ 6110: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 |
parent | 6003:fe081789f7b5 |
rev | line source |
---|---|
3505
106b4ae4469b
mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents:
3503
diff
changeset
|
1 --- |
3506
7b1eede1a840
mod_pubsub_post/README: Set stage label to stable
Kim Alvefur <zash@zash.se>
parents:
3505
diff
changeset
|
2 labels: |
7b1eede1a840
mod_pubsub_post/README: Set stage label to stable
Kim Alvefur <zash@zash.se>
parents:
3505
diff
changeset
|
3 - 'Stage-Stable' |
3505
106b4ae4469b
mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents:
3503
diff
changeset
|
4 summary: Publish to PubSub nodes from via HTTP POST/WebHooks |
106b4ae4469b
mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents:
3503
diff
changeset
|
5 --- |
106b4ae4469b
mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents:
3503
diff
changeset
|
6 |
3100 | 7 # Introduction |
8 | |
3505
106b4ae4469b
mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents:
3503
diff
changeset
|
9 This module is a fairly generic WebHook receiver that lets you easily |
106b4ae4469b
mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents:
3503
diff
changeset
|
10 publish data to PubSub using a HTTP POST request. The payload can be |
106b4ae4469b
mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents:
3503
diff
changeset
|
11 Atom feeds, arbitrary XML, or arbitrary JSON. The type should be |
106b4ae4469b
mod_pubsub_post/README: Mention use as a webhook receiver
Kim Alvefur <zash@zash.se>
parents:
3503
diff
changeset
|
12 indicated via the `Content-Type` header. |
3100 | 13 |
3719
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
14 - JSON data is wrapped in a [XEP-0335] container. |
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
15 - An Atom feed may have many `<entry>` and each one is published as |
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
16 its own PubSub item. |
4636
6bcccc63b542
mod_pubsub_post: fix incorrect claim
Jonas Schäfer <jonas@wielicki.name>
parents:
4552
diff
changeset
|
17 - Other XML is simply published to the item with ID `current`. |
3719
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
18 |
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
19 ## JSON example |
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
20 |
3100 | 21 ``` {.bash} |
22 curl http://localhost:5280/pubsub_post/princely_musings \ | |
23 -H "Content-Type: application/json" \ | |
24 --data-binary '{"musing":"To be, or not to be: that is the question"}' | |
25 ``` | |
26 | |
3719
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
27 ## Atom example |
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
28 |
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
29 ``` {.bash} |
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
30 curl http://localhost:5280/pubsub_post/princely_musings \ |
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
31 -H "Content-Type: application/xml" \ |
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
32 --data-binary '<feed xmlns="http://www.w3.org/2005/Atom"> |
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
33 <entry><title>Hello</title></entry></feed>' |
4552
c87181a98f29
mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents:
3719
diff
changeset
|
34 ``` |
3719
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
35 |
4552
c87181a98f29
mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents:
3719
diff
changeset
|
36 ## Simple form-data |
c87181a98f29
mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents:
3719
diff
changeset
|
37 |
c87181a98f29
mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents:
3719
diff
changeset
|
38 ``` {.bash} |
c87181a98f29
mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents:
3719
diff
changeset
|
39 curl http://localhost:5280/pubsub_post/princely_musings \ |
c87181a98f29
mod_pubsub_post: Add support for urlencoded form-data
Kim Alvefur <zash@zash.se>
parents:
3719
diff
changeset
|
40 --data musing="To be, or not to be: that is the question" |
3719
a6db99c1420a
mod_pubsub_post/README: Add an example of curl-ing Atom data
Kim Alvefur <zash@zash.se>
parents:
3506
diff
changeset
|
41 ``` |
3153
e0de1fdbc80a
mod_pubsub_post/README: Describe what happens to different data types
Kim Alvefur <zash@zash.se>
parents:
3152
diff
changeset
|
42 |
3100 | 43 # Configuration |
44 | |
3503
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
45 All settings are optional. |
3100 | 46 |
3503
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
47 ## Actor identification |
3100 | 48 |
3503
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
49 First we have to figure out who is making the request. |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
50 This is configured on a per-node basis like this: |
3501
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
51 |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
52 ``` {.lua} |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
53 -- Per node secrets |
3503
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
54 pubsub_post_actors = { |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
55 princely_musings = "hamlet@denmark.lit" |
3501
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
56 } |
3503
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
57 pubsub_post_default_actor = "nobody@nowhere.invalid" |
3501
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
58 ``` |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
59 |
3503
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
60 `pubsub_post_default_actor` is used when trying to publish to a node |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
61 that is not listed in `pubsub_post_actors`. Otherwise the IP address |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
62 of the connection is used. |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
63 |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
64 ## Authentication |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
65 |
3501
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
66 [WebSub](https://www.w3.org/TR/2018/REC-websub-20180123/) [Authenticated |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
67 Content |
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
68 Distribution](https://www.w3.org/TR/2018/REC-websub-20180123/#authenticated-content-distribution) |
3503
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
69 authentication is used. |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
70 |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
71 ``` {.lua} |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
72 pubsub_post_secrets = { |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
73 princely_musings = "shared secret" |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
74 } |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
75 pubsub_post_default_secret = "default secret" |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
76 ``` |
3501
1df139b157fb
mod_pubsub_post: Add support for WebSub authentication
Kim Alvefur <zash@zash.se>
parents:
3256
diff
changeset
|
77 |
3503
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
78 `pubsub_post_default_secret` is used when trying to publish to a node |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
79 that is not listed in `pubsub_post_secrets`. Otherwise the request |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
80 proceeds with the previously identified actor. |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
81 |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
82 ::: {.alert .alert-danger} |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
83 If configured without a secret and a default actor that has permission |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
84 to create nodes the service becomes wide open. |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
85 ::: |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
86 |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
87 ## Authorization |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
88 |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
89 Authorization is handled via pubsub affiliations. Publishing requires an |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
90 affiliation with the _publish_ capability, usually `"publisher"`. |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
91 |
882180b459a0
mod_pubsub_post: Restructure authentication and authorization (BC)
Kim Alvefur <zash@zash.se>
parents:
3502
diff
changeset
|
92 ### Setting up affiliations |
3256
0992c0398783
mod_pubsub_post/README: Add a heading for affiliation related text
Kim Alvefur <zash@zash.se>
parents:
3153
diff
changeset
|
93 |
3152
882f7d5c3ce8
mod_pubsub_post/README: Affiliation management in trunk now
Kim Alvefur <zash@zash.se>
parents:
3151
diff
changeset
|
94 Prosodys PubSub module supports [setting affiliations via |
4961
18774cc621d6
mod_pubsub_post/README: Update references to trunk with release numbers
Kim Alvefur <zash@zash.se>
parents:
4842
diff
changeset
|
95 XMPP](https://xmpp.org/extensions/xep-0060.html#owner-affiliations), |
18774cc621d6
mod_pubsub_post/README: Update references to trunk with release numbers
Kim Alvefur <zash@zash.se>
parents:
4842
diff
changeset
|
96 since 0.11.0, so affiliations can be configured with a capable client. |
3100 | 97 |
98 It can however be done from another plugin: | |
99 | |
100 ``` {.lua} | |
101 local mod_pubsub = module:depends("pubsub"); | |
102 local pubsub = mod_pubsub.service; | |
103 | |
104 pubsub:create("princely_musings", true); | |
105 pubsub:set_affiliation("princely_musings", true, "127.0.0.1", "publisher"); | |
106 ``` | |
4842
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
107 |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
108 ## Data mappings |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
109 |
4961
18774cc621d6
mod_pubsub_post/README: Update references to trunk with release numbers
Kim Alvefur <zash@zash.se>
parents:
4842
diff
changeset
|
110 The datamapper library added in 0.12.0 allows posting JSON and having it |
4842
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
111 converted to XML based on a special JSON Schema. |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
112 |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
113 ``` json |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
114 { |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
115 "properties" : { |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
116 "content" : { |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
117 "type" : "string" |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
118 }, |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
119 "title" : { |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
120 "type" : "string" |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
121 } |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
122 }, |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
123 "type" : "object", |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
124 "xml" : { |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
125 "name" : "musings", |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
126 "namespace" : "urn:example:princely" |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
127 } |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
128 } |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
129 ``` |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
130 |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
131 And in the Prosody config file: |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
132 |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
133 ``` lua |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
134 pubsub_post_mappings = { |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
135 princely_musings = "musings.json"; |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
136 } |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
137 ``` |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
138 |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
139 Then, POSTing a JSON payload like |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
140 |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
141 ``` json |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
142 { |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
143 "content" : "To be, or not to be: that is the question", |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
144 "title" : "Soliloquy" |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
145 } |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
146 ``` |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
147 |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
148 results in a payload like |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
149 |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
150 ``` xml |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
151 <musings xmlns="urn:example:princely"> |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
152 <title>Soliloquy</title> |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
153 <content>To be, or not to be: that is the question</content> |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
154 </musings> |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
155 ``` |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
156 |
8d4b91a703af
mod_pubsub_post: Document JSON to XML mapping capability
Kim Alvefur <zash@zash.se>
parents:
4636
diff
changeset
|
157 being published to the node. |