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