MySQL 9.3.0
Source Code Documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
mrs::rest::RestRequestHandler Class Reference
Inheritance diagram for mrs::rest::RestRequestHandler:
[legend]

Public Types

using Cached = collector::MysqlCacheManager::CachedObject
 
using AuthUser = database::entry::AuthUser
 
using RestHandler = mrs::interface::RestHandler
 
using HandlerPtr = std::weak_ptr< RestHandler >
 
using Options = mrs::interface::Options
 

Public Member Functions

 RestRequestHandler (HandlerPtr rest_handler, mrs::interface::AuthorizeManager *auth_manager, const bool may_log_requests)
 
void trace_error (const http::ErrorChangeResponse &e)
 
void trace_error (const http::Error &e)
 
void trace_error (const mysqlrouter::MySQLSession::Error &e)
 
void trace_error (const RestError &e)
 
void trace_error (const std::exception &e)
 
void trace_error (const Handler::HttpResult &e)
 
void trace_http (const char *type, interface::ReqRes &options, HttpMethod::key_type method, const std::string &path, const HttpHeaders &headers, HttpBuffer &buffer) const
 
Handler::HttpResult handle_request_impl (RestHandler *handler, RequestContext &ctxt)
 
void handle_request (::http::base::Request &req) override
 
- Public Member Functions inherited from http::base::RequestHandler
virtual void handle_request (http::base::Request &req)=0
 
 RequestHandler ()=default
 
 RequestHandler (const RequestHandler &)=delete
 
RequestHandleroperator= (const RequestHandler &)=delete
 
virtual ~RequestHandler ()
 

Private Types

using ObjectKeyValue = std::map< std::string, std::string >
 

Private Member Functions

ObjectKeyValue responose_encode_error (const http::Error &, const mysqlrouter::MySQLSession::Error &e)
 
ObjectKeyValue responose_encode_error (const http::Error &converted, const std::exception &e)
 
ObjectKeyValue responose_encode_error (const http::Error &converted, const http::Error &)
 
template<typename Err >
void handle_error (RestHandler *handler, RequestContext *ctxt, const Err &err)
 
const Optionsget_options ()
 
void send_reply (HttpRequest &req, int status_code)
 
void send_reply (HttpRequest &req, int status_code, const std::string &status_text)
 
void send_reply (HttpRequest &req, int status_code, const std::string &status_text, HttpBuffer &buffer)
 
void send_rfc7807_error (HttpRequest &req, HttpStatusCode::key_type status_code, const std::map< std::string, std::string > &fields)
 
void send_json_document (HttpRequest &req, HttpStatusCode::key_type status_code, const rapidjson::Document &json_doc)
 

Static Private Member Functions

static http::Error err_to_http_error (const mysqlrouter::MySQLSession::Error &err)
 
static const http::Errorerr_to_http_error (const http::Error &err)
 
static http::Error err_to_http_error (const mrs::database::JSONInputError &err)
 
static http::Error err_to_http_error (const RestError &err)
 
static http::Error err_to_http_error (const ETagMismatch &err)
 
static http::Error err_to_http_error (const std::invalid_argument &err)
 
static http::Error err_to_http_error (const std::exception &)
 

Private Attributes

mysql_harness::logging::DomainLogger logger_
 
HandlerPtr rest_handler_
 
mrs::interface::AuthorizeManagerauth_manager_
 
const bool may_log_requests_
 

Member Typedef Documentation

◆ AuthUser

using mrs::rest::RestRequestHandler::AuthUser = database::entry::AuthUser

◆ Cached

◆ HandlerPtr

◆ ObjectKeyValue

using mrs::rest::RestRequestHandler::ObjectKeyValue = std::map<std::string, std::string>
private

◆ Options

◆ RestHandler

Constructor & Destructor Documentation

◆ RestRequestHandler()

mrs::rest::RestRequestHandler::RestRequestHandler ( HandlerPtr  rest_handler,
mrs::interface::AuthorizeManager auth_manager,
const bool  may_log_requests 
)
inline

Member Function Documentation

◆ err_to_http_error() [1/7]

static http::Error mrs::rest::RestRequestHandler::err_to_http_error ( const ETagMismatch err)
inlinestaticprivate

◆ err_to_http_error() [2/7]

static const http::Error & mrs::rest::RestRequestHandler::err_to_http_error ( const http::Error err)
inlinestaticprivate

◆ err_to_http_error() [3/7]

static http::Error mrs::rest::RestRequestHandler::err_to_http_error ( const mrs::database::JSONInputError err)
inlinestaticprivate

◆ err_to_http_error() [4/7]

static http::Error mrs::rest::RestRequestHandler::err_to_http_error ( const mysqlrouter::MySQLSession::Error err)
inlinestaticprivate

◆ err_to_http_error() [5/7]

static http::Error mrs::rest::RestRequestHandler::err_to_http_error ( const RestError err)
inlinestaticprivate

◆ err_to_http_error() [6/7]

static http::Error mrs::rest::RestRequestHandler::err_to_http_error ( const std::exception &  )
inlinestaticprivate

◆ err_to_http_error() [7/7]

static http::Error mrs::rest::RestRequestHandler::err_to_http_error ( const std::invalid_argument &  err)
inlinestaticprivate

◆ get_options()

const Options & mrs::rest::RestRequestHandler::get_options ( )
inlineprivate

◆ handle_error()

template<typename Err >
void mrs::rest::RestRequestHandler::handle_error ( RestHandler handler,
RequestContext ctxt,
const Err &  err 
)
inlineprivate

◆ handle_request()

void mrs::rest::RestRequestHandler::handle_request ( ::http::base::Request req)
inlineoverride

◆ handle_request_impl()

Handler::HttpResult mrs::rest::RestRequestHandler::handle_request_impl ( RestHandler handler,
RequestContext ctxt 
)
inline

◆ responose_encode_error() [1/3]

ObjectKeyValue mrs::rest::RestRequestHandler::responose_encode_error ( const http::Error ,
const mysqlrouter::MySQLSession::Error e 
)
inlineprivate

◆ responose_encode_error() [2/3]

ObjectKeyValue mrs::rest::RestRequestHandler::responose_encode_error ( const http::Error converted,
const http::Error  
)
inlineprivate

◆ responose_encode_error() [3/3]

ObjectKeyValue mrs::rest::RestRequestHandler::responose_encode_error ( const http::Error converted,
const std::exception &  e 
)
inlineprivate

◆ send_json_document()

void mrs::rest::RestRequestHandler::send_json_document ( HttpRequest req,
HttpStatusCode::key_type  status_code,
const rapidjson::Document &  json_doc 
)
inlineprivate

◆ send_reply() [1/3]

void mrs::rest::RestRequestHandler::send_reply ( HttpRequest req,
int  status_code 
)
inlineprivate

◆ send_reply() [2/3]

void mrs::rest::RestRequestHandler::send_reply ( HttpRequest req,
int  status_code,
const std::string &  status_text 
)
inlineprivate

◆ send_reply() [3/3]

void mrs::rest::RestRequestHandler::send_reply ( HttpRequest req,
int  status_code,
const std::string &  status_text,
HttpBuffer buffer 
)
inlineprivate

◆ send_rfc7807_error()

void mrs::rest::RestRequestHandler::send_rfc7807_error ( HttpRequest req,
HttpStatusCode::key_type  status_code,
const std::map< std::string, std::string > &  fields 
)
inlineprivate

◆ trace_error() [1/6]

void mrs::rest::RestRequestHandler::trace_error ( const Handler::HttpResult e)
inline

◆ trace_error() [2/6]

void mrs::rest::RestRequestHandler::trace_error ( const http::Error e)
inline

◆ trace_error() [3/6]

void mrs::rest::RestRequestHandler::trace_error ( const http::ErrorChangeResponse e)
inline

◆ trace_error() [4/6]

void mrs::rest::RestRequestHandler::trace_error ( const mysqlrouter::MySQLSession::Error e)
inline

◆ trace_error() [5/6]

void mrs::rest::RestRequestHandler::trace_error ( const RestError e)
inline

◆ trace_error() [6/6]

void mrs::rest::RestRequestHandler::trace_error ( const std::exception &  e)
inline

◆ trace_http()

void mrs::rest::RestRequestHandler::trace_http ( const char *  type,
interface::ReqRes options,
HttpMethod::key_type  method,
const std::string &  path,
const HttpHeaders headers,
HttpBuffer buffer 
) const
inline

Member Data Documentation

◆ auth_manager_

mrs::interface::AuthorizeManager* mrs::rest::RestRequestHandler::auth_manager_
private

◆ logger_

mysql_harness::logging::DomainLogger mrs::rest::RestRequestHandler::logger_
private

◆ may_log_requests_

const bool mrs::rest::RestRequestHandler::may_log_requests_
private

◆ rest_handler_

HandlerPtr mrs::rest::RestRequestHandler::rest_handler_
private

The documentation for this class was generated from the following file: