Support move semantics for Response::set_content() (#1764)

This commit is contained in:
Jiwoo Park 2024-01-27 21:53:19 +09:00 committed by GitHub
parent 449801990f
commit 44b3fe6277
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -596,6 +596,7 @@ struct Response {
void set_redirect(const std::string &url, int status = StatusCode::Found_302);
void set_content(const char *s, size_t n, const std::string &content_type);
void set_content(const std::string &s, const std::string &content_type);
void set_content(std::string &&s, const std::string &content_type);
void set_content_provider(
size_t length, const std::string &content_type, ContentProvider provider,
@ -5350,6 +5351,15 @@ inline void Response::set_content(const std::string &s,
set_content(s.data(), s.size(), content_type);
}
inline void Response::set_content(std::string &&s,
const std::string &content_type) {
body = std::move(s);
auto rng = headers.equal_range("Content-Type");
headers.erase(rng.first, rng.second);
set_header("Content-Type", content_type);
}
inline void Response::set_content_provider(
size_t in_length, const std::string &content_type, ContentProvider provider,
ContentProviderResourceReleaser resource_releaser) {