Mercurial > irccd
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/links/links.hpp Wed Oct 24 21:05:00 2018 +0200 @@ -0,0 +1,106 @@ +/* + * links.hpp -- links plugin + * + * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef IRCCD_LINKS_HPP +#define IRCCD_LINKS_HPP + +/** + * \file links.hpp + * \brief Links plugin. + */ + +#include <irccd/daemon/plugin.hpp> + +namespace irccd { + +/** + * \brief Links plugin. + */ +class links_plugin : public plugin { +public: + // options. + static inline unsigned conf_timeout{30U}; + + // formats. + static inline std::string format_info{"#{title}"}; + +public: + /** + * Inherited constructors. + */ + using plugin::plugin; + + /** + * \copydoc plugin::get_name + */ + auto get_name() const noexcept -> std::string_view override; + + /** + * \copydoc plugin::get_author + */ + auto get_author() const noexcept -> std::string_view override; + + /** + * \copydoc plugin::get_license + */ + auto get_license() const noexcept -> std::string_view override; + + /** + * \copydoc plugin::get_summary + */ + auto get_summary() const noexcept -> std::string_view override; + + /** + * \copydoc plugin::get_version + */ + auto get_version() const noexcept -> std::string_view override; + + /** + * \copydoc plugin::set_options + */ + void set_options(const map&) override; + + /** + * \copydoc plugin::set_formats + */ + void set_formats(const map&) override; + + /** + * \copydoc plugin::handle_message + */ + void handle_message(irccd&, const message_event&) override; + + /** + * Export ABI. + * + * \return the compiled version + */ + static auto abi() -> version; + + /** + * Create the plugin + * + * \param id the plugin id + * \return the compiled version + */ + static auto init(std::string) -> std::unique_ptr<plugin>; +}; + +} // !irccd + +#endif // !IRCCD_LINKS_HPP