From 0ab40dc1ab4e689921da54080b135e1d22b1c586 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?louiz=E2=80=99?= <louiz@louiz.org>
Date: Tue, 14 Mar 2017 21:45:23 +0100
Subject: Refactoring louloulibs and cmake

Use OBJECT libraries
Remove the louloulibs directory
Write FOUND variables in the cache
---
 src/xmpp/adhoc_command.cpp | 80 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)
 create mode 100644 src/xmpp/adhoc_command.cpp

(limited to 'src/xmpp/adhoc_command.cpp')

diff --git a/src/xmpp/adhoc_command.cpp b/src/xmpp/adhoc_command.cpp
new file mode 100644
index 0000000..825cc92
--- /dev/null
+++ b/src/xmpp/adhoc_command.cpp
@@ -0,0 +1,80 @@
+#include <xmpp/adhoc_command.hpp>
+#include <xmpp/xmpp_component.hpp>
+#include <utils/reload.hpp>
+
+using namespace std::string_literals;
+
+AdhocCommand::AdhocCommand(std::vector<AdhocStep>&& callbacks, const std::string& name, const bool admin_only):
+  name(name),
+  callbacks(std::move(callbacks)),
+  admin_only(admin_only)
+{
+}
+
+bool AdhocCommand::is_admin_only() const
+{
+  return this->admin_only;
+}
+
+void PingStep1(XmppComponent&, AdhocSession&, XmlNode& command_node)
+{
+  XmlSubNode note(command_node, "note");
+  note["type"] = "info";
+  note.set_inner("Pong");
+}
+
+void HelloStep1(XmppComponent&, AdhocSession&, XmlNode& command_node)
+{
+  XmlSubNode x(command_node, "jabber:x:data:x");
+  x["type"] = "form";
+  XmlSubNode title(x, "title");
+  title.set_inner("Configure your name.");
+  XmlSubNode instructions(x, "instructions");
+  instructions.set_inner("Please provide your name.");
+  XmlSubNode name_field(x, "field");
+  name_field["var"] = "name";
+  name_field["type"] = "text-single";
+  name_field["label"] = "Your name";
+  XmlSubNode required(name_field, "required");
+}
+
+void HelloStep2(XmppComponent&, AdhocSession& session, XmlNode& command_node)
+{
+  // Find out if the name was provided in the form.
+  if (const XmlNode* x = command_node.get_child("x", "jabber:x:data"))
+    {
+      const XmlNode* name_field = nullptr;
+      for (const XmlNode* field: x->get_children("field", "jabber:x:data"))
+        if (field->get_tag("var") == "name")
+          {
+            name_field = field;
+            break;
+          }
+      if (name_field)
+        {
+          if (const XmlNode* value = name_field->get_child("value", "jabber:x:data"))
+            {
+              const std::string value_str = value->get_inner();
+              command_node.delete_all_children();
+              XmlSubNode note(command_node, "note");
+              note["type"] = "info";
+              note.set_inner("Hello "s + value_str + "!"s);
+              return;
+            }
+        }
+    }
+  command_node.delete_all_children();
+  XmlSubNode error(command_node, ADHOC_NS":error");
+  error["type"] = "modify";
+  XmlSubNode condition(error, STANZA_NS":bad-request");
+  session.terminate();
+}
+
+void Reload(XmppComponent&, AdhocSession&, XmlNode& command_node)
+{
+  ::reload_process();
+  command_node.delete_all_children();
+  XmlSubNode note(command_node, "note");
+  note["type"] = "info";
+  note.set_inner("Configuration reloaded.");
+}
-- 
cgit v1.2.3


From 5402a256d1f0ebbeafa32d250d000cf38fe748fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?louiz=E2=80=99?= <louiz@louiz.org>
Date: Fri, 7 Apr 2017 18:45:24 +0200
Subject: Apply all the clang-tidy modernize-* fixes

---
 src/xmpp/adhoc_command.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'src/xmpp/adhoc_command.cpp')

diff --git a/src/xmpp/adhoc_command.cpp b/src/xmpp/adhoc_command.cpp
index 825cc92..e02bf35 100644
--- a/src/xmpp/adhoc_command.cpp
+++ b/src/xmpp/adhoc_command.cpp
@@ -1,11 +1,12 @@
+#include <utility>
 #include <xmpp/adhoc_command.hpp>
 #include <xmpp/xmpp_component.hpp>
 #include <utils/reload.hpp>
 
 using namespace std::string_literals;
 
-AdhocCommand::AdhocCommand(std::vector<AdhocStep>&& callbacks, const std::string& name, const bool admin_only):
-  name(name),
+AdhocCommand::AdhocCommand(std::vector<AdhocStep>&& callbacks, std::string name, const bool admin_only):
+  name(std::move(name)),
   callbacks(std::move(callbacks)),
   admin_only(admin_only)
 {
-- 
cgit v1.2.3