mirror of
https://github.com/yhirose/cpp-httplib.git
synced 2025-05-11 05:33:56 +00:00
Merge branch 'MannyClicks-patch-2'
This commit is contained in:
commit
77536acef7
14
httplib.h
14
httplib.h
@ -781,11 +781,13 @@ inline const char *get_header_value(const Headers &headers, const char *key,
|
|||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int get_header_value_int(const Headers &headers, const char *key,
|
inline uint64_t get_header_value_uint64(const Headers &headers, const char *key,
|
||||||
int def = 0) {
|
int def = 0) {
|
||||||
auto it = headers.find(key);
|
auto it = headers.find(key);
|
||||||
if (it != headers.end()) { return std::stoi(it->second); }
|
if (it != headers.end()) {
|
||||||
return def;
|
return std::strtoull(it->second.data(), nullptr, 10);
|
||||||
|
}
|
||||||
|
return def;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool read_headers(Stream &strm, Headers &headers) {
|
inline bool read_headers(Stream &strm, Headers &headers) {
|
||||||
@ -881,7 +883,7 @@ inline bool read_content_chunked(Stream &strm, std::string &out) {
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
bool read_content(Stream &strm, T &x, Progress progress = Progress()) {
|
bool read_content(Stream &strm, T &x, Progress progress = Progress()) {
|
||||||
if (has_header(x.headers, "Content-Length")) {
|
if (has_header(x.headers, "Content-Length")) {
|
||||||
auto len = get_header_value_int(x.headers, "Content-Length", 0);
|
auto len = get_header_value_uint64(x.headers, "Content-Length", 0);
|
||||||
if (len == 0) {
|
if (len == 0) {
|
||||||
const auto &encoding =
|
const auto &encoding =
|
||||||
get_header_value(x.headers, "Transfer-Encoding", 0, "");
|
get_header_value(x.headers, "Transfer-Encoding", 0, "");
|
||||||
|
10
test/test.cc
10
test/test.cc
@ -72,8 +72,8 @@ TEST(GetHeaderValueTest, DefaultValue) {
|
|||||||
|
|
||||||
TEST(GetHeaderValueTest, DefaultValueInt) {
|
TEST(GetHeaderValueTest, DefaultValueInt) {
|
||||||
Headers headers = {{"Dummy", "Dummy"}};
|
Headers headers = {{"Dummy", "Dummy"}};
|
||||||
auto val = detail::get_header_value_int(headers, "Content-Length", 100);
|
auto val = detail::get_header_value_uint64(headers, "Content-Length", 100);
|
||||||
EXPECT_EQ(100, val);
|
EXPECT_EQ(100ull, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GetHeaderValueTest, RegularValue) {
|
TEST(GetHeaderValueTest, RegularValue) {
|
||||||
@ -84,8 +84,8 @@ TEST(GetHeaderValueTest, RegularValue) {
|
|||||||
|
|
||||||
TEST(GetHeaderValueTest, RegularValueInt) {
|
TEST(GetHeaderValueTest, RegularValueInt) {
|
||||||
Headers headers = {{"Content-Length", "100"}, {"Dummy", "Dummy"}};
|
Headers headers = {{"Content-Length", "100"}, {"Dummy", "Dummy"}};
|
||||||
auto val = detail::get_header_value_int(headers, "Content-Length", 0);
|
auto val = detail::get_header_value_uint64(headers, "Content-Length", 0);
|
||||||
EXPECT_EQ(100, val);
|
EXPECT_EQ(100ull, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GetHeaderValueTest, Range) {
|
TEST(GetHeaderValueTest, Range) {
|
||||||
@ -474,7 +474,7 @@ protected:
|
|||||||
EXPECT_EQ("value3", req.get_param_value("array", 2));
|
EXPECT_EQ("value3", req.get_param_value("array", 2));
|
||||||
})
|
})
|
||||||
.Post("/validate-no-multiple-headers",
|
.Post("/validate-no-multiple-headers",
|
||||||
[&](const Request &req, Response &res) {
|
[&](const Request &req, Response & /*res*/) {
|
||||||
EXPECT_EQ(1u, req.get_header_value_count("Content-Length"));
|
EXPECT_EQ(1u, req.get_header_value_count("Content-Length"));
|
||||||
EXPECT_EQ("5", req.get_header_value("Content-Length"));
|
EXPECT_EQ("5", req.get_header_value("Content-Length"));
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user