annotate irccdctl/watch_cli.cpp @ 669:6eb4caea77a5

Tests: split libirccd util tests into libcommon, closes #789 @1h While here, remove unneeded and deprecated functions from string_util and adapt existing code to new functions.
author David Demelier <markand@malikania.fr>
date Fri, 06 Apr 2018 22:06:07 +0200
parents 4a13a016ea4f
children 95ac3ace1610
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * watch_cli.cpp -- implementation of irccdctl watch
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
628
27587ff92a64 Misc: update copyrights
David Demelier <markand@malikania.fr>
parents: 574
diff changeset
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <functional>
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <unordered_map>
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <irccd/json_util.hpp>
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <irccd/options.hpp>
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <irccd/ctl/controller.hpp>
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include <boost/system/system_error.hpp>
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 #include "watch_cli.hpp"
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 namespace irccd {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 namespace ctl {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 namespace {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 std::string format(std::vector<std::string> args)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 auto result = option::read(args, {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 { "-f", true },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 { "--format", true }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 });
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 if (result.count("-f") > 0)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 return result.find("-f")->second;
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 if (result.count("--format") > 0)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 return result.find("--format")->second;
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 return "native";
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 void onConnect(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 std::cout << "event: onConnect\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
55 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 void onInvite(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 std::cout << "event: onInvite\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
61 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
62 std::cout << "origin: " << json_util::pretty(v.value("origin", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
63 std::cout << "channel: " << json_util::pretty(v.value("channel", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
65
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 void onJoin(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 std::cout << "event: onJoin\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
69 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
70 std::cout << "origin: " << json_util::pretty(v.value("origin", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
71 std::cout << "channel: " << json_util::pretty(v.value("channel", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
73
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 void onKick(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 std::cout << "event: onKick\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
77 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
78 std::cout << "origin: " << json_util::pretty(v.value("origin", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
79 std::cout << "channel: " << json_util::pretty(v.value("channel", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
80 std::cout << "target: " << json_util::pretty(v.value("target", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
81 std::cout << "reason: " << json_util::pretty(v.value("reason", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
83
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 void onMessage(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 std::cout << "event: onMessage\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
87 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
88 std::cout << "origin: " << json_util::pretty(v.value("origin", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
89 std::cout << "channel: " << json_util::pretty(v.value("channel", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
90 std::cout << "message: " << json_util::pretty(v.value("message", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 void onMe(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 std::cout << "event: onMe\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
96 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
97 std::cout << "origin: " << json_util::pretty(v.value("origin", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
98 std::cout << "target: " << json_util::pretty(v.value("target", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
99 std::cout << "message: " << json_util::pretty(v.value("message", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
101
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 void onMode(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 std::cout << "event: onMode\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
105 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
106 std::cout << "origin: " << json_util::pretty(v.value("origin", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
107 std::cout << "mode: " << json_util::pretty(v.value("mode", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 void onNames(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 std::cout << "event: onNames\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
113 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
114 std::cout << "channel: " << json_util::pretty(v.value("channel", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
115 std::cout << "names: " << json_util::pretty(v.value("names", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
117
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 void onNick(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 std::cout << "event: onNick\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
121 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
122 std::cout << "origin: " << json_util::pretty(v.value("origin", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
123 std::cout << "nickname: " << json_util::pretty(v.value("nickname", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
125
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 void onNotice(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 std::cout << "event: onNotice\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
129 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
130 std::cout << "origin: " << json_util::pretty(v.value("origin", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
131 std::cout << "message: " << json_util::pretty(v.value("message", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
133
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 void onPart(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 std::cout << "event: onPart\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
137 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
138 std::cout << "origin: " << json_util::pretty(v.value("origin", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
139 std::cout << "channel: " << json_util::pretty(v.value("channel", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
140 std::cout << "reason: " << json_util::pretty(v.value("reason", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
142
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 void onTopic(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 std::cout << "event: onTopic\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
146 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
147 std::cout << "origin: " << json_util::pretty(v.value("origin", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
148 std::cout << "channel: " << json_util::pretty(v.value("channel", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
149 std::cout << "topic: " << json_util::pretty(v.value("topic", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
151
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 void onWhois(const nlohmann::json &v)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 std::cout << "event: onWhois\n";
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
155 std::cout << "server: " << json_util::pretty(v.value("server", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
156 std::cout << "nickname: " << json_util::pretty(v.value("nickname", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
157 std::cout << "username: " << json_util::pretty(v.value("username", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
158 std::cout << "host: " << json_util::pretty(v.value("host", "(unknown)")) << "\n";
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
159 std::cout << "realname: " << json_util::pretty(v.value("realname", "(unknown)")) << "\n";
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
161
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 const std::unordered_map<std::string, std::function<void (const nlohmann::json&)>> events{
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 { "onConnect", onConnect },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 { "onInvite", onInvite },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 { "onJoin", onJoin },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 { "onKick", onKick },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 { "onMessage", onMessage },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 { "onMe", onMe },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 { "onMode", onMode },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 { "onNames", onNames },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 { "onNick", onNick },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 { "onNotice", onNotice },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 { "onPart", onPart },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 { "onTopic", onTopic },
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 { "onWhois", onWhois }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 };
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
177
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 void get_event(ctl::controller& ctl, std::string fmt)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 ctl.recv([&ctl, fmt] (auto code, auto message) {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 if (code)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 throw boost::system::system_error(code);
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
183
649
4a13a016ea4f Irccd: use new json_util::parser class
David Demelier <markand@malikania.fr>
parents: 641
diff changeset
184 const auto event = json_util::parser(message).get<std::string>("event");
641
7e2d0739f37c Irccd: import json_util from code
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
185 const auto it = events.find(event ? *event : "");
528
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
186
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 if (it != events.end()) {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 if (fmt == "json")
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 std::cout << message.dump(4) << std::endl;
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 else {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 it->second(message);
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 std::cout << std::endl;
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
195
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 get_event(ctl, std::move(fmt));
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 });
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
199
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 } // !namespace
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
201
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 std::string watch_cli::name() const
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 return "watch";
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
206
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 void watch_cli::exec(ctl::controller& ctl, const std::vector<std::string>& args)
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 {
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 auto fmt = format(args);
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
210
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 if (fmt != "native" && fmt != "json")
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 throw std::invalid_argument("invalid format given: " + fmt);
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
213
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 get_event(ctl, fmt);
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 }
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
216
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 } // !ctl
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
218
9daccaeedcce Irccdctl: split cli.hpp, closes #726
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 } // !irccd