Decentralised Art Server
High-performance C++ backend that exposes HTML interface and a secure REST API for managing Performative Transactions entities
 
Loading...
Searching...
No Matches
api.hpp
Go to the documentation of this file.
1#pragma once
2#include <ranges>
3
4#include "native.h"
5#include <asio.hpp>
6#include <asio/experimental/awaitable_operators.hpp>
7using namespace asio::experimental::awaitable_operators;
8
9#include <spdlog/spdlog.h>
10
11#include "utils.hpp"
12#include "session.hpp"
13#include "route.hpp"
14#include "parser.hpp"
15#include "pt.hpp"
16#include "auth.hpp"
17#include "evm.hpp"
18#include "file.hpp"
19#include "version.hpp"
20#include "loader.hpp"
21
22namespace dcn
23{
24
25 void setCORSHeaders(const http::Request & request, http::Response& response);
26
27 asio::awaitable<std::expected<evmc::address, AuthenticationError>> authenticate(const http::Request & request, const AuthManager & auth_manager);
28
29 asio::awaitable<http::Response> GET_version(const http::Request &, std::vector<RouteArg>, QueryArgsList, const std::string & build_timestamp);
30
38 asio::awaitable<http::Response> HEAD_ServeFile(const http::Request &, std::vector<RouteArg>, QueryArgsList);
39
47 asio::awaitable<http::Response> OPTIONS_ServeFile(const http::Request &, std::vector<RouteArg>, QueryArgsList);
48
57 asio::awaitable<http::Response> GET_ServeFile(const http::Request &, std::vector<RouteArg>, QueryArgsList, const std::string mime_type, const std::string & file_content);
58
59 asio::awaitable<http::Response> GET_ServeBinaryFile(const http::Request &, std::vector<RouteArg>, QueryArgsList, const std::string mime_type, const std::vector<std::byte> & file_content);
60
61
77 asio::awaitable<http::Response> GET_nonce(const http::Request &, std::vector<RouteArg>, QueryArgsList, AuthManager &);
78
79
80 asio::awaitable<http::Response> OPTIONS_auth(const http::Request &, std::vector<RouteArg>, QueryArgsList);
109 asio::awaitable<http::Response> POST_auth(const http::Request &, std::vector<RouteArg>, QueryArgsList, AuthManager &);
110
111
112 asio::awaitable<http::Response> OPTIONS_refresh(const http::Request &, std::vector<RouteArg>, QueryArgsList);
139 asio::awaitable<http::Response> POST_refresh(const http::Request &, std::vector<RouteArg>, QueryArgsList, AuthManager &);
140
141
142 asio::awaitable<http::Response> OPTIONS_accountInfo(const http::Request & request, std::vector<RouteArg>, QueryArgsList);
143 asio::awaitable<http::Response> GET_accountInfo(const http::Request &, std::vector<RouteArg>, QueryArgsList, Registry & registry);
144
152 asio::awaitable<http::Response> OPTIONS_feature(const http::Request &, std::vector<RouteArg>, QueryArgsList);
153
164 asio::awaitable<http::Response> GET_feature(const http::Request &, std::vector<RouteArg>, QueryArgsList, Registry & registry, EVM & evm);
165
184 asio::awaitable<http::Response> POST_feature(const http::Request &, std::vector<RouteArg>, QueryArgsList, AuthManager & auth_manager, Registry & registry, EVM & evm);
185
193 asio::awaitable<http::Response> OPTIONS_transformation(const http::Request &, std::vector<RouteArg>, QueryArgsList);
194
205 asio::awaitable<http::Response> GET_transformation(const http::Request &, std::vector<RouteArg> args, QueryArgsList, Registry & registry, EVM & evm);
206
218 asio::awaitable<http::Response> POST_transformation(const http::Request &, std::vector<RouteArg> args, QueryArgsList, AuthManager & auth_manager, Registry & registry, EVM & evm);
219
220
221 //asio::awaitable<http::Response> GET_condition(const http::Request &, std::vector<RouteArg>);
222
223 //asio::awaitable<http::Response> POST_condition(const http::Request &);
224
225 asio::awaitable<http::Response> OPTIONS_execute(const http::Request &, std::vector<RouteArg>, QueryArgsList);
226 asio::awaitable<http::Response> GET_execute(const http::Request & request, std::vector<RouteArg> args, QueryArgsList, const AuthManager & auth_manager, const Registry & registry, EVM & evm);
227}
Definition decentralised_art.hpp:30
asio::awaitable< std::expected< evmc::address, AuthenticationError > > authenticate(const http::Request &request, const AuthManager &auth_manager)
Definition api_auth.cpp:5
asio::awaitable< http::Response > OPTIONS_transformation(const http::Request &, std::vector< RouteArg >, QueryArgsList)
Definition api_transformation.cpp:5
asio::awaitable< http::Response > GET_ServeBinaryFile(const http::Request &, std::vector< RouteArg >, QueryArgsList, const std::string mime_type, const std::vector< std::byte > &file_content)
Definition api_file.cpp:51
asio::awaitable< http::Response > OPTIONS_auth(const http::Request &, std::vector< RouteArg >, QueryArgsList)
Definition api_auth.cpp:86
asio::awaitable< http::Response > OPTIONS_ServeFile(const http::Request &, std::vector< RouteArg >, QueryArgsList)
Definition api_file.cpp:18
asio::awaitable< http::Response > OPTIONS_refresh(const http::Request &, std::vector< RouteArg >, QueryArgsList)
Definition api_auth.cpp:186
asio::awaitable< http::Response > POST_transformation(const http::Request &, std::vector< RouteArg > args, QueryArgsList, AuthManager &auth_manager, Registry &registry, EVM &evm)
Definition api_transformation.cpp:157
asio::awaitable< http::Response > OPTIONS_accountInfo(const http::Request &request, std::vector< RouteArg >, QueryArgsList)
Definition api_account.cpp:5
asio::awaitable< http::Response > OPTIONS_execute(const http::Request &, std::vector< RouteArg >, QueryArgsList)
Definition api_execute.cpp:5
asio::awaitable< http::Response > POST_auth(const http::Request &, std::vector< RouteArg >, QueryArgsList, AuthManager &)
Handles a POST request to /auth.
Definition api_auth.cpp:103
asio::awaitable< http::Response > POST_refresh(const http::Request &, std::vector< RouteArg >, QueryArgsList, AuthManager &)
Handles a POST request to /auth/refresh.
Definition api_auth.cpp:203
asio::awaitable< http::Response > HEAD_ServeFile(const http::Request &, std::vector< RouteArg >, QueryArgsList)
Definition api_file.cpp:5
asio::awaitable< http::Response > POST_feature(const http::Request &, std::vector< RouteArg >, QueryArgsList, AuthManager &auth_manager, Registry &registry, EVM &evm)
Handle a POST request to /features.
Definition api_feature.cpp:158
asio::awaitable< http::Response > GET_nonce(const http::Request &, std::vector< RouteArg >, QueryArgsList, AuthManager &)
Handle a GET request to /auth/nonce.
Definition api_auth.cpp:46
asio::awaitable< http::Response > GET_execute(const http::Request &request, std::vector< RouteArg > args, QueryArgsList, const AuthManager &auth_manager, const Registry &registry, EVM &evm)
Definition api_execute.cpp:22
asio::awaitable< http::Response > GET_ServeFile(const http::Request &, std::vector< RouteArg >, QueryArgsList, const std::string mime_type, const std::string &file_content)
Definition api_file.cpp:36
asio::awaitable< http::Response > GET_accountInfo(const http::Request &, std::vector< RouteArg >, QueryArgsList, Registry &registry)
Definition api_account.cpp:22
void setCORSHeaders(const http::Request &request, http::Response &response)
Definition api.cpp:5
asio::awaitable< http::Response > GET_transformation(const http::Request &, std::vector< RouteArg > args, QueryArgsList, Registry &registry, EVM &evm)
Definition api_transformation.cpp:22
absl::flat_hash_map< std::string, RouteArg > QueryArgsList
Definition route.hpp:23
asio::awaitable< http::Response > GET_version(const http::Request &, std::vector< RouteArg >, QueryArgsList, const std::string &build_timestamp)
Definition api.cpp:21
asio::awaitable< http::Response > GET_feature(const http::Request &, std::vector< RouteArg >, QueryArgsList, Registry &registry, EVM &evm)
Returns the newest feature by name or a specific feature by name and id if the id is provided in the ...
Definition api_feature.cpp:22
asio::awaitable< http::Response > OPTIONS_feature(const http::Request &, std::vector< RouteArg >, QueryArgsList)
Definition api_feature.cpp:5