beast-based connectors#

Available connectors

blocking

beast_blocking, beast_blocking_monadic

async

coroutine

beast_coro, beast_coro_monadic

Connector implemented on top of boost::beast library. Link with banana-beast to use it.

CMake Target

banana-beast

Include

#include <banana/connector/beast.hpp>

Supported platforms

Windows, Linux, macOS

Dependencies

boost::beast

class beast_blocking#

boost::beast-based blocking connector with exception-based error handling.

beast_blocking::beast_blocking(std::string token, boost::asio::io_context &io_context, boost::asio::ssl::context &ssl_context)#

Default constructor accepting Telegram Bot token, I/O and ssl context.

template<class T>
T request(std::string_view method, std::optional<std::string> body, expected<T> (*then)(expected<std::string>))#

Part of the required connector interface.

Example
#include <banana/connector/beast.hpp>

banana::connector::beast_blocking connector("TG_BOT_TOKEN");
banana::api::message_t msg = banana::api::send_message(connector, { "@user", "Hello, world!" });

class beast_blocking_monadic#

boost::beast-based blocking connector with monadic error handling.

beast_blocking_monadic::beast_blocking_monadic(std::string token, boost::asio::io_context &io_context, boost::asio::ssl::context &ssl_context)#

Default constructor accepting Telegram Bot token, I/O and ssl context.

template<class T>
expected<T> request(std::string_view method, std::optional<std::string> body, expected<T> (*then)(expected<std::string>))#

Part of the required connector interface.

Example
#include <banana/connector/beast.hpp>

banana::connector::beast_blocking_monadic connector("TG_BOT_TOKEN");
banana::expected<banana::api::message_t> msg = banana::api::send_message(connector, { "@user", "Hello, world!" });

class beast_coro#

boost::beast-based blocking connector with exception-based error handling. Available since C++20 if BOOST_ASIO_HAS_CO_AWAIT is defined by boost::asio.

beast_coro::beast_coro(std::string token, boost::asio::io_context &io_context, boost::asio::ssl::context &ssl_context)#

Default constructor accepting Telegram Bot token, I/O and ssl context.

template<class T>
boost::asio::awaitable<T> request(std::string_view method, std::optional<std::string> body, expected<T> (*then)(expected<std::string>))#

Part of the required connector interface.

Example
#include <banana/connector/beast.hpp>

banana::connector::beast_coro connector("TG_BOT_TOKEN");
banana::api::message_t msg = co_await banana::api::send_message(connector, { "@user", "Hello, world!" });

class beast_coro_monadic#

boost::beast-based coroutine-based connector with monadic error handling. Available since C++20 if BOOST_ASIO_HAS_CO_AWAIT is defined by boost::asio.

beast_coro_monadic::beast_coro_monadic(std::string token, boost::asio::io_context &io_context, boost::asio::ssl::context &ssl_context)#

Default constructor accepting Telegram Bot token, I/O and ssl context.

template<class T>
boost::asio::awaitable<expected<T>> request(std::string_view method, std::optional<std::string> body, expected<T> (*then)(expected<std::string>))#

Part of the required connector interface.

Example
#include <banana/connector/beast.hpp>

banana::connector::beast_coro_monadic connector("TG_BOT_TOKEN");
banana::expected<banana::api::message_t> msg = co_await banana::api::send_message(connector, { "@user", "Hello, world!" });