Mercurial > irccd
annotate plugins/links/links.hpp @ 768:d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
Import uriparser to decode URLs correctly with fragment and query support for a
better link decomposition.
Improve pre-check message to allow people writing text after the link, e.g:
http://example.org <- you should check this
Improve relocation.
Split code for better style.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 24 Oct 2018 21:05:00 +0200 |
parents | |
children | 8c44bbcbbab9 |
rev | line source |
---|---|
768
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * links.hpp -- links plugin |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr> |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #ifndef IRCCD_LINKS_HPP |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #define IRCCD_LINKS_HPP |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 * \file links.hpp |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 * \brief Links plugin. |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 #include <irccd/daemon/plugin.hpp> |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 namespace irccd { |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 * \brief Links plugin. |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 class links_plugin : public plugin { |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 public: |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 // options. |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 static inline unsigned conf_timeout{30U}; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 // formats. |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 static inline std::string format_info{"#{title}"}; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 public: |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 * Inherited constructors. |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 using plugin::plugin; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 * \copydoc plugin::get_name |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 auto get_name() const noexcept -> std::string_view override; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 * \copydoc plugin::get_author |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 auto get_author() const noexcept -> std::string_view override; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 * \copydoc plugin::get_license |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 auto get_license() const noexcept -> std::string_view override; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 * \copydoc plugin::get_summary |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 auto get_summary() const noexcept -> std::string_view override; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 * \copydoc plugin::get_version |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 auto get_version() const noexcept -> std::string_view override; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 * \copydoc plugin::set_options |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 void set_options(const map&) override; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 * \copydoc plugin::set_formats |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 void set_formats(const map&) override; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 * \copydoc plugin::handle_message |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 void handle_message(irccd&, const message_event&) override; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 * Export ABI. |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 * |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 * \return the compiled version |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 static auto abi() -> version; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 /** |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 * Create the plugin |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 * |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 * \param id the plugin id |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 * \return the compiled version |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 */ |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 static auto init(std::string) -> std::unique_ptr<plugin>; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 }; |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 } // !irccd |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 |
d8bf53170fb6
Plugin links: fix various errors, closes #912 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 #endif // !IRCCD_LINKS_HPP |