irccd  3.0.3
server_api.hpp
1 /*
2  * server_api.hpp -- Irccd.Server API
3  *
4  * Copyright (c) 2013-2019 David Demelier <markand@malikania.fr>
5  *
6  * Permission to use, copy, modify, and/or distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef IRCCD_JS_SERVER_API_HPP
20 #define IRCCD_JS_SERVER_API_HPP
21 
27 #include <irccd/daemon/server.hpp>
28 
29 #include "api.hpp"
30 
31 namespace irccd::js {
32 
37 class server_api : public api {
38 public:
42  auto get_name() const noexcept -> std::string_view override;
43 
47  void load(daemon::bot& bot, js::plugin& plugin) override;
48 };
49 
50 namespace duk {
51 
57 template <>
58 struct type_traits<std::shared_ptr<daemon::server>> {
66  static void push(duk_context* ctx, std::shared_ptr<daemon::server> server);
67 
75  static auto require(duk_context* ctx, duk_idx_t index) -> std::shared_ptr<daemon::server>;
76 };
77 
81 template <>
82 struct type_traits<daemon::server_error> {
89  static void raise(duk_context* ctx, const daemon::server_error& error);
90 };
91 
92 } // !duk
93 
94 } // !irccd::js
95 
96 #endif // !IRCCD_JS_SERVER_API_HPP
Server error.
Definition: server.hpp:802
Javascript API module.
Definition: api.hpp:51
Base ECMAScript error class.
Definition: duk.hpp:329
Javascript plugins for irccd.
Definition: plugin.hpp:44
Irccd.Server Javascript API.
Definition: server_api.hpp:37
void load(daemon::bot &bot, js::plugin &plugin) override
auto get_name() const noexcept -> std::string_view override
Javascript namespace.
Definition: api.hpp:42
Definition: bot.hpp:253
static void push(duk_context *ctx, std::shared_ptr< daemon::server > server)
static auto require(duk_context *ctx, duk_idx_t index) -> std::shared_ptr< daemon::server >
Operations on different types.
Definition: duk.hpp:254