Mercurial > irccd
annotate plugins/links/links.cpp @ 824:06cc2f95f479
misc: happy new year!
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 08 Jan 2019 20:41:20 +0100 |
parents | 8460b4a34191 |
children | a23b7b574ed2 |
rev | line source |
---|---|
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * links.cpp -- links plugin |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
824
06cc2f95f479
misc: happy new year!
David Demelier <markand@malikania.fr>
parents:
809
diff
changeset
|
4 * Copyright (c) 2013-2019 David Demelier <markand@malikania.fr> |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
790
diff
changeset
|
19 #include <irccd/daemon/bot.hpp> |
768
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
20 #include <irccd/daemon/server.hpp> |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <irccd/string_util.hpp> |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 |
768
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
24 #include "requester.hpp" |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
25 #include "links.hpp" |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
768
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
27 using std::make_unique; |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 using std::move; |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 using std::string; |
768
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
30 using std::string_view; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
31 using std::unique_ptr; |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
790
diff
changeset
|
33 using irccd::string_util::to_uint; |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
790
diff
changeset
|
35 using irccd::daemon::bot; |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
790
diff
changeset
|
36 using irccd::daemon::message_event; |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
790
diff
changeset
|
37 |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
790
diff
changeset
|
38 namespace irccd { |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 |
768
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
40 auto links_plugin::get_name() const noexcept -> string_view |
722
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
41 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
42 return "links"; |
722
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
43 } |
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
44 |
768
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
45 auto links_plugin::get_author() const noexcept -> string_view |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
47 return "David Demelier <markand@malikania.fr>"; |
722
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
48 } |
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
49 |
768
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
50 auto links_plugin::get_license() const noexcept -> string_view |
722
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
51 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
52 return "ISC"; |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 } |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 |
768
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
55 auto links_plugin::get_summary() const noexcept -> string_view |
722
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
56 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
57 return "show webpage title"; |
722
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
58 } |
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
59 |
768
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
60 auto links_plugin::get_version() const noexcept -> string_view |
722
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
61 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
62 return IRCCD_VERSION; |
722
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
63 } |
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
64 |
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
65 void links_plugin::set_options(const map& conf) |
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
66 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
67 if (const auto it = conf.find("timeout"); it != conf.end()) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
68 if (const auto v = to_uint(it->second); v) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
69 conf_timeout = *v; |
722
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
70 } |
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
71 |
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
716
diff
changeset
|
72 void links_plugin::set_formats(const map& formats) |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
74 if (const auto it = formats.find("info"); it != formats.end()) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
75 format_info = it->second; |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 } |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
790
diff
changeset
|
78 void links_plugin::handle_message(bot& bot, const message_event& ev) |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
790
diff
changeset
|
80 requester::run(bot.get_service(), ev.server, ev.origin, ev.channel, ev.message); |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 } |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 |
716
16e83b636cb8
Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents:
712
diff
changeset
|
83 auto links_plugin::abi() -> version |
16e83b636cb8
Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents:
712
diff
changeset
|
84 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
85 return version(); |
716
16e83b636cb8
Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents:
712
diff
changeset
|
86 } |
16e83b636cb8
Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents:
712
diff
changeset
|
87 |
768
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
767
diff
changeset
|
88 auto links_plugin::init(string id) -> unique_ptr<plugin> |
716
16e83b636cb8
Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents:
712
diff
changeset
|
89 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
768
diff
changeset
|
90 return make_unique<links_plugin>(move(id)); |
716
16e83b636cb8
Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents:
712
diff
changeset
|
91 } |
16e83b636cb8
Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents:
712
diff
changeset
|
92 |
16e83b636cb8
Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents:
712
diff
changeset
|
93 BOOST_DLL_ALIAS(links_plugin::abi, irccd_abi_links) |
16e83b636cb8
Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents:
712
diff
changeset
|
94 BOOST_DLL_ALIAS(links_plugin::init, irccd_init_links) |
16e83b636cb8
Irccd: use BOOST_DLL_ALIAS to avoid warnings
David Demelier <markand@malikania.fr>
parents:
712
diff
changeset
|
95 |
705
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 // }}} |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 |
4b5dba257d81
Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 } // !irccd |