26#ifndef _MYSQL_REST_SERVICE_SRC_MRS_ENDPOINT_HANDLER_ROUTINE_UTILITIES_H_
27#define _MYSQL_REST_SERVICE_SRC_MRS_ENDPOINT_HANDLER_ROUTINE_UTILITIES_H_
46 std::weak_ptr<mrs::endpoint::DbObjectEndpoint> &wp) {
48 return locked->get_url().join();
53 const auto &elements_path = requests_uri.get_path_elements();
54 const auto &elements_base = base_uri.get_path_elements();
56 if (elements_path.size() > elements_base.size())
57 return elements_path[elements_base.size()];
63 std::weak_ptr<mrs::endpoint::DbObjectEndpoint> &wp,
70 const char *sql_state) {
71 static const std::string k_state_with_user_defined_error =
"45000";
72 if (!sql_state)
throw e;
74 log_debug(
"While handling a routine, received a mysql-error with state: %s",
76 if (k_state_with_user_defined_error != sql_state) {
83 if (e.
code() < 5100 || e.
code() >= 5600) {
94 log_debug(
"routine - generated custom HTTPstats + message:%s", json.c_str());
102 if (!ctxt->
user.has_user_id) {
116 if (!ctxt->
user.has_user_id) {
120 return ctxt->
user.name;
124 const std::vector<database::entry::Field> ¶m_fields,
125 const rapidjson::Document &doc) {
132 "Not allowed parameter:" + std::string{
key});
The handler class is the interface for dynamically loadable storage engines.
Definition: handler.h:4666
Definition: mysql_session.h:289
std::string message() const
Definition: mysql_session.h:304
unsigned int code() const
Definition: mysql_session.h:303
Definition: utils_sqlstring.h:67
Log log_debug(std::cout, "DEBUG")
mrs::rest::Handler::HttpResult HttpResult
Definition: handler_content_file.cc:43
static std::string to_string(const LEX_STRING &str)
Definition: lex_string.h:50
auto get_default_status_text(key_type status)
Definition: status_code.h:114
bool has_if(const Container &c, Find_if &&find_if)
Definition: generic.h:106
std::string to_string(const rapidjson::Value &value)
Definition: rapid_json_to_text.h:67
std::map< std::string, std::string > MapObject
std::map that represents simple JSON object.
Definition: to_string.h:44
auto member_iterator(Obj &o)
Definition: rapid_json_iterator.h:90
@ typeJson
Definition: media_type.h:47
constexpr key_type Forbidden
Definition: status_code.h:67
constexpr key_type BadRequest
Definition: status_code.h:64
Request::Uri Uri
Definition: request.cc:36
std::shared_ptr< Type > lock_or_throw_unavail(std::weak_ptr< Type > &endpoint)
Definition: utilities.h:52
void check_input_parameters(const std::vector< database::entry::Field > ¶m_fields, const rapidjson::Document &doc)
Definition: routine_utilities.h:123
std::string get_endpoint_url(std::weak_ptr< mrs::endpoint::DbObjectEndpoint > &wp)
Definition: routine_utilities.h:45
mysqlrouter::sqlstring get_user_id(rest::RequestContext *ctxt, bool required)
Definition: routine_utilities.h:98
std::string get_user_name(rest::RequestContext *ctxt)
Definition: routine_utilities.h:113
HandlerAuthorizeAuthApps::HttpResult HttpResult
Definition: handler_authorize_auth_apps.cc:45
HttpResult handler_mysqlerror(const mysqlrouter::MySQLSession::Error &e, const char *sql_state)
Definition: routine_utilities.h:69
std::string get_path_after_object_name(const ::http::base::Uri &base_uri, const ::http::base::Uri &requests_uri)
Definition: routine_utilities.h:51
Definition: authorize_manager.h:48
std::map< Key, Value, Compare, ut::allocator< std::pair< const Key, Value > > > map
Specialization of map which uses ut_allocator.
Definition: ut0new.h:2894
required string key
Definition: replication_asynchronous_connection_failover.proto:60
required uint32 status
Definition: replication_asynchronous_connection_failover.proto:61
@ modeOut
Definition: field.h:45
Definition: http_result.h:37
int HttpStatus
Definition: http_result.h:39
Definition: request_context.h:47
AuthUser user
Definition: request_context.h:73