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
dcn Namespace Reference

Namespaces

namespace  auth
 
namespace  cmd
 
namespace  crypto
 
namespace  evm
 
namespace  file
 
namespace  http
 
namespace  loader
 
namespace  native
 
namespace  parse
 
namespace  registry
 
namespace  server
 
namespace  utils
 

Functions

asio::awaitable< std::expected< evm::Address, auth::AuthError > > authenticate (const http::Request &request, const auth::AuthManager &auth_manager)
 Helper function to handle authentication.
 
asio::awaitable< http::ResponseGET_version (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, const std::string &build_timestamp)
 Handles GET requests for the version endpoint.
 
asio::awaitable< http::ResponseHEAD_serveFile (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args)
 Handles HEAD requests for a file.
 
asio::awaitable< http::ResponseOPTIONS_serveFile (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args)
 Handles OPTIONS requests for a file by returning a response with CORS headers.
 
asio::awaitable< http::ResponseGET_serveFile (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, const std::string mime_type, const std::string &file_content)
 Handles GET requests for a file.
 
asio::awaitable< http::ResponseGET_serveBinaryFile (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, const std::string mime_type, const std::vector< std::byte > &file_content)
 Handles GET requests for a binary file.
 
asio::awaitable< http::ResponseGET_nonce (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, auth::AuthManager &auth_manager)
 Handle a GET request to /auth/nonce.
 
asio::awaitable< http::ResponseOPTIONS_auth (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args)
 Handles a OPTIONS request to /auth.
 
asio::awaitable< http::ResponsePOST_auth (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, auth::AuthManager &auth_manager)
 Handles a POST request to /auth.
 
asio::awaitable< http::ResponseOPTIONS_accountInfo (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args)
 Handles a OPTIONS request to /account.
 
asio::awaitable< http::ResponseGET_accountInfo (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, registry::Registry &registry)
 Handles a GET request to /account.
 
asio::awaitable< http::ResponseHEAD_feature (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, registry::Registry &registry)
 Handles HEAD requests for the feature endpoint.
 
asio::awaitable< http::ResponseOPTIONS_feature (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args)
 Handles OPTIONS requests by returning a response with CORS headers.
 
asio::awaitable< http::ResponseGET_feature (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, registry::Registry &registry, evm::EVM &evm)
 Handle a GET request to /features.
 
asio::awaitable< http::ResponsePOST_feature (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, auth::AuthManager &auth_manager, registry::Registry &registry, evm::EVM &evm)
 Handle a POST request to /features.
 
asio::awaitable< http::ResponseHEAD_transformation (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, registry::Registry &registry)
 Handles HEAD requests for the transformation endpoint.
 
asio::awaitable< http::ResponseOPTIONS_transformation (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args)
 Handles OPTIONS requests for the transformation endpoint by returning a response with CORS headers.
 
asio::awaitable< http::ResponseGET_transformation (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, registry::Registry &registry, evm::EVM &evm)
 Handles GET requests for the transformation endpoint.
 
asio::awaitable< http::ResponsePOST_transformation (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, auth::AuthManager &auth_manager, registry::Registry &registry, evm::EVM &evm)
 Handles POST requests for the transformation endpoint.
 
asio::awaitable< http::ResponseHEAD_condition (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, registry::Registry &registry)
 Handles HEAD requests for the condition endpoint.
 
asio::awaitable< http::ResponseOPTIONS_condition (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args)
 Handles OPTIONS requests for the condition endpoint by returning a response with CORS headers.
 
asio::awaitable< http::ResponseGET_condition (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, registry::Registry &registry, evm::EVM &evm)
 Handles GET requests for the condition endpoint.
 
asio::awaitable< http::ResponsePOST_condition (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, auth::AuthManager &auth_manager, registry::Registry &registry, evm::EVM &evm)
 Handles POST requests for the condition endpoint.
 
asio::awaitable< http::ResponseOPTIONS_execute (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args)
 Handles OPTIONS requests for the execute endpoint by returning a response with CORS headers.
 
asio::awaitable< http::ResponsePOST_execute (const http::Request &request, std::vector< server::RouteArg > route_args, server::QueryArgsList query_args, const auth::AuthManager &auth_manager, evm::EVM &evm)
 Handles POST requests for the execute endpoint.
 
template<typename H >
AbslHashValue (H h, const Condition &c)
 Combines hash values for a Condition object.
 
std::string constructConditionSolidityCode (const Condition &condition)
 
template<typename H >
AbslHashValue (H h, const TransformationDef &td)
 Combines hash values for a TransformationDef object.
 
template<typename H >
AbslHashValue (H h, const Dimension &d)
 Combines hash values for a Dimension object.
 
template<typename H >
AbslHashValue (H h, const Feature &f)
 Combines hash values for a Feature object.
 
std::string constructFeatureSolidityCode (const Feature &feature)
 
template<typename H >
AbslHashValue (H h, const Transformation &t)
 Combines hash values for a Transformation object.
 
std::string constructTransformationSolidityCode (const Transformation &transformation)
 

Variables

const asio::ip::port_type DEFAULT_PORT = 54321
 
const asio::ip::port_type DEFAULT_TLS_PORT = 54322
 
const short int MAJOR_VERSION = 0
 
const short int MINOR_VERSION = 2
 
const short int PATCH_VERSION = 0
 

Function Documentation

◆ AbslHashValue() [1/5]

template<typename H >
H dcn::AbslHashValue ( h,
const Condition &  c 
)
inline

Combines hash values for a Condition object.

Template Parameters
HThe hash state type.
Parameters
hThe initial hash state.
cThe Condition object whose attributes will be hashed.
Returns
A combined hash state incorporating the name and solution source of the Condition.

◆ AbslHashValue() [2/5]

template<typename H >
H dcn::AbslHashValue ( h,
const Dimension &  d 
)
inline

Combines hash values for a Dimension object.

Template Parameters
HThe hash state type.
Parameters
hThe initial hash state.
dThe Dimension object whose attributes will be hashed.
Returns
A combined hash state incorporating the feature name and all transformation names of the Dimension.

◆ AbslHashValue() [3/5]

template<typename H >
H dcn::AbslHashValue ( h,
const Feature &  f 
)
inline

Combines hash values for a Feature object.

Template Parameters
HThe hash state type.
Parameters
hThe initial hash state.
fThe Feature object whose attributes will be hashed.
Returns
A combined hash state incorporating the name and dimensions of the Feature.

◆ AbslHashValue() [4/5]

template<typename H >
H dcn::AbslHashValue ( h,
const Transformation &  t 
)
inline

Combines hash values for a Transformation object.

Template Parameters
HThe hash state type.
Parameters
hThe initial hash state.
tThe Transformation object whose attributes will be hashed.
Returns
A combined hash state incorporating the name and source of the Transformation.

◆ AbslHashValue() [5/5]

template<typename H >
H dcn::AbslHashValue ( h,
const TransformationDef &  td 
)
inline

Combines hash values for a TransformationDef object.

Template Parameters
HThe hash state type.
Parameters
hThe initial hash state.
tdThe TransformationDef object whose attributes will be hashed.
Returns
A combined hash state incorporating the feature name and all transformation names of the TransformationDef.

◆ authenticate()

asio::awaitable< std::expected< evm::Address, auth::AuthError > > dcn::authenticate ( const http::Request request,
const auth::AuthManager auth_manager 
)

Helper function to handle authentication.

◆ constructConditionSolidityCode()

std::string dcn::constructConditionSolidityCode ( const Condition &  condition)

◆ constructFeatureSolidityCode()

std::string dcn::constructFeatureSolidityCode ( const Feature &  feature)

◆ constructTransformationSolidityCode()

std::string dcn::constructTransformationSolidityCode ( const Transformation &  transformation)

◆ GET_accountInfo()

asio::awaitable< http::Response > dcn::GET_accountInfo ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
registry::Registry registry 
)

Handles a GET request to /account.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
registryRegistry instance
Returns
An HTTP response

◆ GET_condition()

asio::awaitable< http::Response > dcn::GET_condition ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
registry::Registry registry,
evm::EVM evm 
)

Handles GET requests for the condition endpoint.

Retrieves a condition

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
registryRegistry instance for retrieving conditions
evmEVM instance
Returns
An HTTP response

◆ GET_feature()

asio::awaitable< http::Response > dcn::GET_feature ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
registry::Registry registry,
evm::EVM evm 
)

Handle a GET request to /features.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
registryRegistry instance for retrieving features
Returns
An HTTP response

◆ GET_nonce()

asio::awaitable< http::Response > dcn::GET_nonce ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
auth::AuthManager auth_manager 
)

Handle a GET request to /auth/nonce.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
auth_managerAuth manager instance
Returns
An HTTP response

◆ GET_serveBinaryFile()

asio::awaitable< http::Response > dcn::GET_serveBinaryFile ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
const std::string  mime_type,
const std::vector< std::byte > &  file_content 
)

Handles GET requests for a binary file.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
mime_typeMIME type of the file
file_contentContent of the file
Returns
An HTTP response

◆ GET_serveFile()

asio::awaitable< http::Response > dcn::GET_serveFile ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
const std::string  mime_type,
const std::string &  file_content 
)

Handles GET requests for a file.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
mime_typeMIME type of the file
file_contentContent of the file
Returns
An HTTP response

◆ GET_transformation()

asio::awaitable< http::Response > dcn::GET_transformation ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
registry::Registry registry,
evm::EVM evm 
)

Handles GET requests for the transformation endpoint.

Retrieves a transformation

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
registryRegistry instance for retrieving transformations
evmEVM instance
Returns
An HTTP response

◆ GET_version()

asio::awaitable< http::Response > dcn::GET_version ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
const std::string &  build_timestamp 
)

Handles GET requests for the version endpoint.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
build_timestampBuild timestamp
Returns
An HTTP response

◆ HEAD_condition()

asio::awaitable< http::Response > dcn::HEAD_condition ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
registry::Registry registry 
)

Handles HEAD requests for the condition endpoint.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
registryRegistry instance for retrieving conditions
Returns
An HTTP response

◆ HEAD_feature()

asio::awaitable< http::Response > dcn::HEAD_feature ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
registry::Registry registry 
)

Handles HEAD requests for the feature endpoint.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
registryRegistry instance for retrieving features
Returns
An HTTP response

◆ HEAD_serveFile()

asio::awaitable< http::Response > dcn::HEAD_serveFile ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args 
)

Handles HEAD requests for a file.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
Returns
An HTTP response

◆ HEAD_transformation()

asio::awaitable< http::Response > dcn::HEAD_transformation ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
registry::Registry registry 
)

Handles HEAD requests for the transformation endpoint.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
registryRegistry instance for retrieving transformations
Returns
An HTTP response

◆ OPTIONS_accountInfo()

asio::awaitable< http::Response > dcn::OPTIONS_accountInfo ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args 
)

Handles a OPTIONS request to /account.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
Returns
An HTTP response

◆ OPTIONS_auth()

asio::awaitable< http::Response > dcn::OPTIONS_auth ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args 
)

Handles a OPTIONS request to /auth.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
Returns
An HTTP response

◆ OPTIONS_condition()

asio::awaitable< http::Response > dcn::OPTIONS_condition ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args 
)

Handles OPTIONS requests for the condition endpoint by returning a response with CORS headers.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
Returns
An HTTP response

◆ OPTIONS_execute()

asio::awaitable< http::Response > dcn::OPTIONS_execute ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args 
)

Handles OPTIONS requests for the execute endpoint by returning a response with CORS headers.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
Returns
An HTTP response

◆ OPTIONS_feature()

asio::awaitable< http::Response > dcn::OPTIONS_feature ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args 
)

Handles OPTIONS requests by returning a response with CORS headers.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
Returns
An HTTP response with CORS headers

◆ OPTIONS_serveFile()

asio::awaitable< http::Response > dcn::OPTIONS_serveFile ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args 
)

Handles OPTIONS requests for a file by returning a response with CORS headers.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
Returns
An HTTP response

◆ OPTIONS_transformation()

asio::awaitable< http::Response > dcn::OPTIONS_transformation ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args 
)

Handles OPTIONS requests for the transformation endpoint by returning a response with CORS headers.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
Returns
An HTTP response with CORS headers for the transformation endpoint

◆ POST_auth()

asio::awaitable< http::Response > dcn::POST_auth ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
auth::AuthManager auth_manager 
)

Handles a POST request to /auth.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
auth_managerAuth manager instance
Returns
An HTTP response

◆ POST_condition()

asio::awaitable< http::Response > dcn::POST_condition ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
auth::AuthManager auth_manager,
registry::Registry registry,
evm::EVM evm 
)

Handles POST requests for the condition endpoint.

Verifies the access token, then adds a new condition to the registry.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
auth_managerAuthentication manager instance for verifying access tokens
registryRegistry instance for adding conditions
evmEVM instance
Returns
An HTTP response

◆ POST_execute()

asio::awaitable< http::Response > dcn::POST_execute ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
const auth::AuthManager auth_manager,
evm::EVM evm 
)

Handles POST requests for the execute endpoint.

Verifies the access token, then executes a runner transaction.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
auth_managerAuthentication manager instance for verifying access tokens
evmEVM instance
Returns
An HTTP response

◆ POST_feature()

asio::awaitable< http::Response > dcn::POST_feature ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
auth::AuthManager auth_manager,
registry::Registry registry,
evm::EVM evm 
)

Handle a POST request to /features.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
registryRegistry instance for retrieving features
Returns
An HTTP response

◆ POST_transformation()

asio::awaitable< http::Response > dcn::POST_transformation ( const http::Request request,
std::vector< server::RouteArg route_args,
server::QueryArgsList  query_args,
auth::AuthManager auth_manager,
registry::Registry registry,
evm::EVM evm 
)

Handles POST requests for the transformation endpoint.

Verifies the access token, then adds a new transformation to the registry.

Parameters
requestThe incoming HTTP request
route_argsRoute arguments
query_argsQuery arguments
auth_managerAuthentication manager instance for verifying access tokens
registryRegistry instance for adding transformations
evmEVM instance
Returns
An HTTP response

Variable Documentation

◆ DEFAULT_PORT

const asio::ip::port_type dcn::DEFAULT_PORT = 54321

◆ DEFAULT_TLS_PORT

const asio::ip::port_type dcn::DEFAULT_TLS_PORT = 54322

◆ MAJOR_VERSION

const short int dcn::MAJOR_VERSION = 0

◆ MINOR_VERSION

const short int dcn::MINOR_VERSION = 2

◆ PATCH_VERSION

const short int dcn::PATCH_VERSION = 0