view plugins/links/links.hpp @ 847:a23b7b574ed2

irccd: rename [format] section to [templates], closes #1671
author David Demelier <markand@malikania.fr>
date Wed, 10 Jul 2019 20:10:00 +0200
parents 06cc2f95f479
children 5e25439fe98d
line wrap: on
line source

/*
 * links.hpp -- links plugin
 *
 * Copyright (c) 2013-2019 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/dynlib_plugin.hpp>

namespace irccd {

/**
 * \brief Links plugin.
 */
class links_plugin : public daemon::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_templates
	 */
	void set_templates(const map&) override;

	/**
	 * \copydoc plugin::handle_message
	 */
	void handle_message(daemon::bot&, const daemon::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<daemon::plugin>;
};

} // !irccd

#endif // !IRCCD_LINKS_HPP