node-red-contrib-qrusty 0.19.20 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,77 @@
1
+ <script type="text/javascript">
2
+ RED.nodes.registerType("qrusty-update-queue", {
3
+ category: "qrusty",
4
+ color: "#9acfe6",
5
+ defaults: {
6
+ name: { value: "" },
7
+ server: { value: "", type: "qrusty-server", required: true },
8
+ queue: { value: "" },
9
+ newName: { value: "" },
10
+ allowDuplicates: { value: "" },
11
+ },
12
+ inputs: 1,
13
+ outputs: 1,
14
+ icon: "font-awesome/fa-pencil",
15
+ label: function () {
16
+ return this.name || "qrusty update-queue";
17
+ },
18
+ paletteLabel: "update-queue",
19
+ });
20
+ </script>
21
+
22
+ <script type="text/html" data-template-name="qrusty-update-queue">
23
+ <div class="form-row">
24
+ <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
25
+ <input type="text" id="node-input-name" placeholder="optional" />
26
+ </div>
27
+ <div class="form-row">
28
+ <label for="node-input-server"><i class="fa fa-server"></i> Server</label>
29
+ <input type="text" id="node-input-server" />
30
+ </div>
31
+ <div class="form-row">
32
+ <label for="node-input-queue"><i class="fa fa-list"></i> Queue</label>
33
+ <input
34
+ type="text"
35
+ id="node-input-queue"
36
+ placeholder="existing queue name"
37
+ />
38
+ </div>
39
+ <div class="form-row">
40
+ <label for="node-input-newName"
41
+ ><i class="fa fa-pencil"></i> New name</label
42
+ >
43
+ <input
44
+ type="text"
45
+ id="node-input-newName"
46
+ placeholder="leave blank to keep the current name"
47
+ />
48
+ </div>
49
+ <div class="form-row">
50
+ <label for="node-input-allowDuplicates"
51
+ ><i class="fa fa-clone"></i> Duplicates</label
52
+ >
53
+ <select id="node-input-allowDuplicates">
54
+ <option value="">(leave unchanged)</option>
55
+ <option value="true">Allowed</option>
56
+ <option value="false">Blocked</option>
57
+ </select>
58
+ </div>
59
+ </script>
60
+
61
+ <script type="text/html" data-help-name="qrusty-update-queue">
62
+ <p>Updates a queue's name and/or <code>allow_duplicates</code> setting.</p>
63
+ <h3>Inputs</h3>
64
+ <dl class="message-properties">
65
+ <dt class="optional">queue <span class="property-type">string</span></dt>
66
+ <dd>Existing queue to update.</dd>
67
+ <dt class="optional">new_name <span class="property-type">string</span></dt>
68
+ <dd>Rename the queue to this value.</dd>
69
+ <dt class="optional">allow_duplicates <span class="property-type">boolean</span></dt>
70
+ <dd>Toggle duplicate-payload protection.</dd>
71
+ </dl>
72
+ <h3>Outputs</h3>
73
+ <dl class="message-properties">
74
+ <dt>payload <span class="property-type">object</span></dt>
75
+ <dd><code>{ ok: true, name }</code> on success.</dd>
76
+ </dl>
77
+ </script>
@@ -1,13 +1,38 @@
1
- // Function node for updating a queue configuration in qrusty
2
- msg.url = "http://queue-server:6784/update-queue";
3
- msg.method = "POST";
4
- var config = {};
5
- if (msg.new_name !== undefined) config.name = msg.new_name;
6
- if (msg.allow_duplicates !== undefined)
7
- config.allow_duplicates = msg.allow_duplicates;
8
- msg.payload = {
9
- name: msg.queue || "my_queue",
10
- config: config,
1
+ // qrusty-update-queue.js
2
+ //
3
+ // Updates a queue's name and/or allow_duplicates setting. At least one
4
+ // of the two must be provided.
5
+
6
+ const { setupActionNode, fromConfigOrMsg } = require("./lib/common");
7
+
8
+ module.exports = function (RED) {
9
+ function QrustyUpdateQueueNode(n) {
10
+ RED.nodes.createNode(this, n);
11
+ const node = this;
12
+ const server = RED.nodes.getNode(n.server);
13
+
14
+ setupActionNode(node, server, async (client, msg) => {
15
+ const queue = fromConfigOrMsg(n.queue, msg.queue);
16
+ if (!queue) throw new Error("queue name is required");
17
+
18
+ const newName = fromConfigOrMsg(n.newName, msg.new_name ?? msg.newName);
19
+
20
+ let allowDuplicates;
21
+ if (n.allowDuplicates === "true") allowDuplicates = true;
22
+ else if (n.allowDuplicates === "false") allowDuplicates = false;
23
+ else if (typeof msg.allow_duplicates === "boolean")
24
+ allowDuplicates = msg.allow_duplicates;
25
+
26
+ if (newName === undefined && allowDuplicates === undefined) {
27
+ throw new Error(
28
+ "update-queue requires at least one of newName / allow_duplicates",
29
+ );
30
+ }
31
+
32
+ await client.updateQueue(queue, newName, allowDuplicates);
33
+ return { ok: true, name: newName || queue };
34
+ });
35
+ }
36
+
37
+ RED.nodes.registerType("qrusty-update-queue", QrustyUpdateQueueNode);
11
38
  };
12
- msg.headers = { "Content-Type": "application/json" };
13
- return msg;