Skip to content

Commit 59f5fdb

Browse files
committed
Resolve #840
1 parent 13184f5 commit 59f5fdb

File tree

1 file changed

+74
-10
lines changed

1 file changed

+74
-10
lines changed

httplib.h

Lines changed: 74 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -610,15 +610,29 @@ class Server {
610610
virtual bool is_valid() const;
611611

612612
Server &Get(const char *pattern, Handler handler);
613+
Server &Get(const char *pattern, size_t pattern_len, Handler handler);
613614
Server &Post(const char *pattern, Handler handler);
615+
Server &Post(const char *pattern, size_t pattern_len, Handler handler);
614616
Server &Post(const char *pattern, HandlerWithContentReader handler);
617+
Server &Post(const char *pattern, size_t pattern_len,
618+
HandlerWithContentReader handler);
615619
Server &Put(const char *pattern, Handler handler);
620+
Server &Put(const char *pattern, size_t pattern_len, Handler handler);
616621
Server &Put(const char *pattern, HandlerWithContentReader handler);
622+
Server &Put(const char *pattern, size_t pattern_len,
623+
HandlerWithContentReader handler);
617624
Server &Patch(const char *pattern, Handler handler);
625+
Server &Patch(const char *pattern, size_t pattern_len, Handler handler);
618626
Server &Patch(const char *pattern, HandlerWithContentReader handler);
627+
Server &Patch(const char *pattern, size_t pattern_len,
628+
HandlerWithContentReader handler);
619629
Server &Delete(const char *pattern, Handler handler);
630+
Server &Delete(const char *pattern, size_t pattern_len, Handler handler);
620631
Server &Delete(const char *pattern, HandlerWithContentReader handler);
632+
Server &Delete(const char *pattern, size_t pattern_len,
633+
HandlerWithContentReader handler);
621634
Server &Options(const char *pattern, Handler handler);
635+
Server &Options(const char *pattern, size_t pattern_len, Handler handler);
622636

623637
bool set_base_dir(const char *dir, const char *mount_point = nullptr);
624638
bool set_mount_point(const char *mount_point, const char *dir,
@@ -4069,66 +4083,116 @@ inline Server::Server()
40694083
inline Server::~Server() {}
40704084

40714085
inline Server &Server::Get(const char *pattern, Handler handler) {
4086+
return Get(pattern, strlen(pattern), handler);
4087+
}
4088+
4089+
inline Server &Server::Get(const char *pattern, size_t pattern_len,
4090+
Handler handler) {
40724091
get_handlers_.push_back(
4073-
std::make_pair(std::regex(pattern), std::move(handler)));
4092+
std::make_pair(std::regex(pattern, pattern_len), std::move(handler)));
40744093
return *this;
40754094
}
40764095

40774096
inline Server &Server::Post(const char *pattern, Handler handler) {
4097+
return Post(pattern, strlen(pattern), handler);
4098+
}
4099+
4100+
inline Server &Server::Post(const char *pattern, size_t pattern_len,
4101+
Handler handler) {
40784102
post_handlers_.push_back(
4079-
std::make_pair(std::regex(pattern), std::move(handler)));
4103+
std::make_pair(std::regex(pattern, pattern_len), std::move(handler)));
40804104
return *this;
40814105
}
40824106

40834107
inline Server &Server::Post(const char *pattern,
40844108
HandlerWithContentReader handler) {
4109+
return Post(pattern, strlen(pattern), handler);
4110+
}
4111+
4112+
inline Server &Server::Post(const char *pattern, size_t pattern_len,
4113+
HandlerWithContentReader handler) {
40854114
post_handlers_for_content_reader_.push_back(
4086-
std::make_pair(std::regex(pattern), std::move(handler)));
4115+
std::make_pair(std::regex(pattern, pattern_len), std::move(handler)));
40874116
return *this;
40884117
}
40894118

40904119
inline Server &Server::Put(const char *pattern, Handler handler) {
4120+
return Put(pattern, strlen(pattern), handler);
4121+
}
4122+
4123+
inline Server &Server::Put(const char *pattern, size_t pattern_len,
4124+
Handler handler) {
40914125
put_handlers_.push_back(
4092-
std::make_pair(std::regex(pattern), std::move(handler)));
4126+
std::make_pair(std::regex(pattern, pattern_len), std::move(handler)));
40934127
return *this;
40944128
}
40954129

40964130
inline Server &Server::Put(const char *pattern,
40974131
HandlerWithContentReader handler) {
4132+
return Put(pattern, strlen(pattern), handler);
4133+
}
4134+
4135+
inline Server &Server::Put(const char *pattern, size_t pattern_len,
4136+
HandlerWithContentReader handler) {
40984137
put_handlers_for_content_reader_.push_back(
4099-
std::make_pair(std::regex(pattern), std::move(handler)));
4138+
std::make_pair(std::regex(pattern, pattern_len), std::move(handler)));
41004139
return *this;
41014140
}
41024141

41034142
inline Server &Server::Patch(const char *pattern, Handler handler) {
4143+
return Patch(pattern, strlen(pattern), handler);
4144+
}
4145+
4146+
inline Server &Server::Patch(const char *pattern, size_t pattern_len,
4147+
Handler handler) {
41044148
patch_handlers_.push_back(
4105-
std::make_pair(std::regex(pattern), std::move(handler)));
4149+
std::make_pair(std::regex(pattern, pattern_len), std::move(handler)));
41064150
return *this;
41074151
}
41084152

41094153
inline Server &Server::Patch(const char *pattern,
41104154
HandlerWithContentReader handler) {
4155+
return Patch(pattern, strlen(pattern), handler);
4156+
}
4157+
4158+
inline Server &Server::Patch(const char *pattern, size_t pattern_len,
4159+
HandlerWithContentReader handler) {
41114160
patch_handlers_for_content_reader_.push_back(
4112-
std::make_pair(std::regex(pattern), std::move(handler)));
4161+
std::make_pair(std::regex(pattern, pattern_len), std::move(handler)));
41134162
return *this;
41144163
}
41154164

41164165
inline Server &Server::Delete(const char *pattern, Handler handler) {
4166+
return Delete(pattern, strlen(pattern), handler);
4167+
}
4168+
4169+
inline Server &Server::Delete(const char *pattern, size_t pattern_len,
4170+
Handler handler) {
41174171
delete_handlers_.push_back(
4118-
std::make_pair(std::regex(pattern), std::move(handler)));
4172+
std::make_pair(std::regex(pattern, pattern_len), std::move(handler)));
41194173
return *this;
41204174
}
41214175

41224176
inline Server &Server::Delete(const char *pattern,
41234177
HandlerWithContentReader handler) {
4178+
return Delete(pattern, strlen(pattern), handler);
4179+
}
4180+
4181+
inline Server &Server::Delete(const char *pattern, size_t pattern_len,
4182+
HandlerWithContentReader handler) {
41244183
delete_handlers_for_content_reader_.push_back(
4125-
std::make_pair(std::regex(pattern), std::move(handler)));
4184+
std::make_pair(std::regex(pattern, pattern_len), std::move(handler)));
41264185
return *this;
41274186
}
41284187

41294188
inline Server &Server::Options(const char *pattern, Handler handler) {
4189+
return Options(pattern, strlen(pattern), handler);
4190+
}
4191+
4192+
inline Server &Server::Options(const char *pattern, size_t pattern_len,
4193+
Handler handler) {
41304194
options_handlers_.push_back(
4131-
std::make_pair(std::regex(pattern), std::move(handler)));
4195+
std::make_pair(std::regex(pattern, pattern_len), std::move(handler)));
41324196
return *this;
41334197
}
41344198

0 commit comments

Comments
 (0)