8#ifdef MB_SCRIPTING_ENABLED
9#include <dukglue/dukglue.h>
14#include "../utils/utils.h"
19#ifdef MB_SCRIPTING_ENABLED
22 static duk_ret_t nativeConsoleInfo(duk_context *ctx);
24 static duk_ret_t nativeConsoleTrace(duk_context *ctx);
26 static duk_ret_t nativeConsoleTable(duk_context *ctx);
40 const httplib::Request &m_req;
43 const std::string __class_name__ =
"mb::MantisRequest";
105 bool hasHeader(
const std::string &key)
const;
114 std::string
getHeaderValue(
const std::string &key,
const char *def,
size_t id)
const;
137 bool hasTrailer(
const std::string &key)
const;
158 httplib::Match
matches()
const;
237 bool hasKey(
const std::string &key)
const;
251 std::pair<nlohmann::json, std::string>
getBodyAsJson()
const;
264 void set(
const std::string &key, T value) {
265 m_store.
set(key, value);
285 T &
getOr(
const std::string &key, T default_value) {
286 return m_store.
getOr<T>(key, default_value);
290#ifdef MB_SCRIPTING_ENABLED
292 DukValue get_duk(
const std::string &key);
293 DukValue getOr_duk(
const std::string &key,
const DukValue &default_value);
294 void set_duk(
const std::string &key,
const DukValue &value);
316 httplib::Response &m_res;
318 const std::string __class_name__ =
"mb::MantisResponse";
362 [[nodiscard]] std::string
getBody()
const;
368 void setBody(
const std::string &b);
386 [[nodiscard]] std::string
getReason()
const;
399 [[nodiscard]]
bool hasHeader(
const std::string &key)
const;
408 std::string
getHeaderValue(
const std::string &key,
const char *def =
"",
size_t id = 0)
const;
417 [[nodiscard]]
size_t getHeaderValueU64(
const std::string &key,
size_t def = 0,
size_t id = 0)
const;
431 void setHeader(
const std::string &key,
const std::string &val)
const;
438 [[nodiscard]]
bool hasTrailer(
const std::string &key)
const;
446 [[nodiscard]] std::string
getTrailerValue(
const std::string &key,
size_t id = 0)
const;
460 void setRedirect(
const std::string &url,
int status = httplib::StatusCode::Found_302)
const;
468 void setContent(
const char *s,
size_t n,
const std::string &content_type)
const;
475 void setContent(
const std::string &s,
const std::string &content_type)
const;
482 void setContent(std::string &&s,
const std::string &content_type)
const;
489 void setFileContent(
const std::string &path,
const std::string &content_type)
const;
503 void send(
int statusCode,
const std::string &data =
"",
const std::string &content_type =
"text/plain")
const;
513 void sendJSON(
int statusCode = 200,
const json &data = json::object())
const;
514#ifdef MB_SCRIPTING_ENABLED
520 void sendJson(
int statusCode,
const DukValue &data)
const;
527 void sendText(
int statusCode = 200,
const std::string &data =
"")
const;
534 void sendHtml(
int statusCode = 200,
const std::string &data =
"")
const;
540 void sendEmpty(
int statusCode = 204)
const;
550 const httplib::ContentReader &m_reader;
553 std::vector<httplib::FormData> m_formData;
554 json m_json{}, m_filesMetadata{};
555 bool m_parsed =
false;
560 [[nodiscard]]
const httplib::ContentReader &
reader()
const;
564 [[nodiscard]]
const std::vector<httplib::FormData> &
formData()
const;
572 void writeFiles(
const std::string& entity_name);
581 void readMultipart();
585 static json getValueFromType(
const std::string& type,
const std::string& value);
Definition context_store.h:55
T & getOr(const std::string &key, T default_value)
Get context value given the key.
Definition context_store.h:112
void set(const std::string &key, T value)
Store a key-value data in the context.
Definition context_store.h:81
Represents a database table/entity with schema and CRUD operations.
Definition entity.h:39
‍Middleware shorthand for the content reader
Definition http.h:549
static std::string hashMultipartMetadata(const httplib::FormData &data)
Definition http_content_reader.cpp:214
void parseFormDataToEntity(const Entity &entity)
Definition http_content_reader.cpp:43
void writeFiles(const std::string &entity_name)
Definition http_content_reader.cpp:171
const httplib::ContentReader & reader() const
Definition http_content_reader.cpp:13
const json & filesMetadata() const
Definition http_content_reader.cpp:35
const json & jsonBody() const
Definition http_content_reader.cpp:39
const std::vector< httplib::FormData > & formData() const
Definition http_content_reader.cpp:31
bool isMultipartFormData() const
Definition http_content_reader.cpp:15
void undoWrittenFiles(const std::string &entity_name)
Definition http_content_reader.cpp:203
A wrapper class around httplib::Request offering a consistent API and allowing for easy wrapper metho...
Definition http.h:39
bool hasKey(const std::string &key) const
Check if context store has key.
Definition http_request.cpp:211
int getRemotePort() const
Get client remote port.
Definition http_request.cpp:47
std::string getBody() const
Get raw request body.
Definition http_request.cpp:14
void set(const std::string &key, T value)
Store value in request context (for middleware communication).
Definition http.h:264
bool hasQueryParam(const std::string &key) const
Check if query parameter exists.
Definition http_request.cpp:86
bool hasTrailer(const std::string &key) const
Check if trailer exists.
Definition http_request.cpp:71
std::pair< nlohmann::json, std::string > getBodyAsJson() const
Parse request body as JSON.
Definition http_request.cpp:224
bool hasPathParam(const std::string &key) const
Check if path parameter exists.
Definition http_request.cpp:105
std::string getRemoteAddr() const
Get client remote address.
Definition http_request.cpp:16
std::string getPathParamValue(const std::string &key) const
Get path parameter value.
Definition http_request.cpp:109
static void registerDuktapeMethods()
Register MantisRequest methods for JavaScript/Duktape.
std::string getLocalAddr() const
Get server local address.
Definition http_request.cpp:49
std::string getPath() const
Get request path.
Definition http_request.cpp:12
size_t getQueryParamValueCount(const std::string &key) const
Get count of query parameter values.
Definition http_request.cpp:99
size_t getTrailerValueCount(const std::string &key) const
Get count of trailer values.
Definition http_request.cpp:80
std::string getMethod() const
Get HTTP request method (GET, POST, etc.).
Definition http_request.cpp:10
bool isMultipartFormData() const
Check if request is multipart/form-data.
Definition http_request.cpp:123
size_t getHeaderValueU64(const std::string &key, size_t def, size_t id) const
Get header value as unsigned 64-bit integer.
Definition http_request.cpp:62
bool hasHeader(const std::string &key) const
Check if header exists.
Definition http_request.cpp:53
int getLocalPort() const
Get server local port.
Definition http_request.cpp:51
std::string getHeaderValue(const std::string &key, const char *def, size_t id) const
Get header value with default and index.
Definition http_request.cpp:57
std::string getBearerTokenAuth() const
Extract Bearer token from Authorization header.
Definition http_request.cpp:215
T & getOr(const std::string &key, T default_value)
Get value from context store or return default.
Definition http.h:285
std::string getTrailerValue(const std::string &key, size_t id) const
Get trailer value.
Definition http_request.cpp:75
size_t getHeaderValueCount(const std::string &key) const
Get count of header values.
Definition http_request.cpp:67
size_t getPathParamValueCount(const std::string &key) const
Get count of path parameter values.
Definition http_request.cpp:116
bool hasPathParams() const
Check if request has path parameters.
Definition http_request.cpp:103
std::string getQueryParamValue(const std::string &key) const
Get query parameter value (first occurrence).
Definition http_request.cpp:90
httplib::Match matches() const
Get route match information.
Definition http_request.cpp:84
Wrapper around httplib::Response for consistent API.
Definition http.h:315
std::string getHeaderValue(const std::string &key, const char *def="", size_t id=0) const
Get header value.
Definition http_response.cpp:69
bool hasHeader(const std::string &key) const
Check if header exists.
Definition http_response.cpp:64
void setRedirect(const std::string &url, int status=httplib::StatusCode::Found_302) const
Set redirect response.
Definition http_response.cpp:104
std::string getLocation() const
Get redirect location.
Definition http_response.cpp:44
size_t getHeaderValueCount(const std::string &key) const
Get count of header values.
Definition http_response.cpp:79
void sendText(int statusCode=200, const std::string &data="") const
Send text response.
Definition http_response.cpp:140
static void registerDuktapeMethods()
Register MantisResponse methods for JavaScript/Duktape.
void sendHtml(int statusCode=200, const std::string &data="") const
Send HTML response.
Definition http_response.cpp:172
void setFileContent(const std::string &path, const std::string &content_type) const
Set response content from file with MIME type.
Definition http_response.cpp:124
~MantisResponse()=default
Destructor.
void setVersion(const std::string &b)
Set HTTP version.
Definition http_response.cpp:29
void send(int statusCode, const std::string &data="", const std::string &content_type="text/plain") const
Send response with status, data, and content type.
Definition http_response.cpp:134
std::string getBody() const
Get response body.
Definition http_response.cpp:34
httplib::Response & getResponse() const
Definition http_response.cpp:12
void setLocation(const std::string &b)
Set redirect location.
Definition http_response.cpp:49
std::string getVersion() const
Get HTTP version.
Definition http_response.cpp:24
void sendEmpty(int statusCode=204) const
Send empty response (no body).
Definition http_response.cpp:177
void setHeader(const std::string &key, const std::string &val) const
Set response header.
Definition http_response.cpp:84
bool hasTrailer(const std::string &key) const
Check if trailer exists.
Definition http_response.cpp:89
std::string getTrailerValue(const std::string &key, size_t id=0) const
Get trailer value.
Definition http_response.cpp:94
void setContent(const char *s, size_t n, const std::string &content_type) const
Set response content from buffer.
Definition http_response.cpp:109
int getStatus() const
Get HTTP status code.
Definition http_response.cpp:14
void setReason(const std::string &b)
Set status reason phrase.
Definition http_response.cpp:59
void setStatus(int s)
Set HTTP status code.
Definition http_response.cpp:19
void setBody(const std::string &b)
Set response body.
Definition http_response.cpp:39
size_t getTrailerValueCount(const std::string &key) const
Get count of trailer values.
Definition http_response.cpp:99
size_t getHeaderValueU64(const std::string &key, size_t def=0, size_t id=0) const
Get header value as unsigned 64-bit integer.
Definition http_response.cpp:74
void sendJSON(int statusCode=200, const json &data=json::object()) const
Send JSON response.
Definition http_response.cpp:145
std::string getReason() const
Get status reason phrase.
Definition http_response.cpp:54
Entity class for database table operations and CRUD functionality.
Custom exception class for MantisBase errors.
router.h
Definition auth.h:16
nlohmann::json json
Shorten JSON namespace.
Definition context_store.h:18
Type definitions and aliases for MantisBase.