introduce string_view

This commit is contained in:
Chunting Gu
2021-06-17 18:58:53 +08:00
parent 751a3539ae
commit 26bb6b341a
38 changed files with 404 additions and 344 deletions
+17 -17
View File
@@ -19,7 +19,7 @@ RequestPtr RequestBuilder::operator()() {
request->set_url(std::move(url_));
for (std::size_t i = 1; i < headers_.size(); i += 2) {
request->SetHeader(std::move(headers_[i - 1]), std::move(headers_[i]));
request->SetHeader(headers_[i - 1], headers_[i]);
}
// If no Keep-Alive, explicitly set `Connection` to "Close".
@@ -34,7 +34,7 @@ RequestPtr RequestBuilder::operator()() {
if (gzip_ && body_->Compress()) {
request->SetHeader(headers::kContentEncoding, "gzip");
}
#endif
#endif // WEBCC_ENABLE_GZIP
} else if (!form_parts_.empty()) {
// Another choice to generate the boundary is like what Apache does.
// See: https://stackoverflow.com/a/5686863
@@ -77,41 +77,41 @@ RequestBuilder& RequestBuilder::File(const fs::path& path,
return *this;
}
RequestBuilder& RequestBuilder::FormFile(const std::string& name,
RequestBuilder& RequestBuilder::FormFile(string_view name,
const fs::path& path,
const std::string& media_type) {
string_view media_type) {
assert(!name.empty());
return Form(FormPart::NewFile(name, path, media_type));
}
RequestBuilder& RequestBuilder::FormData(const std::string& name,
RequestBuilder& RequestBuilder::FormData(string_view name,
std::string&& data,
const std::string& media_type) {
string_view media_type) {
assert(!name.empty());
return Form(FormPart::New(name, std::move(data), media_type));
}
RequestBuilder& RequestBuilder::Header(const std::string& key,
const std::string& value) {
headers_.push_back(key);
headers_.push_back(value);
RequestBuilder& RequestBuilder::Header(string_view key, string_view value) {
headers_.push_back(ToString(key));
headers_.push_back(ToString(value));
return *this;
}
RequestBuilder& RequestBuilder::Auth(const std::string& type,
const std::string& credentials) {
RequestBuilder& RequestBuilder::Auth(string_view type,
string_view credentials) {
headers_.push_back(headers::kAuthorization);
headers_.push_back(type + " " + credentials);
headers_.push_back(ToString(type) + " " + ToString(credentials));
return *this;
}
RequestBuilder& RequestBuilder::AuthBasic(const std::string& login,
const std::string& password) {
auto credentials = Base64Encode(login + ":" + password);
RequestBuilder& RequestBuilder::AuthBasic(string_view login,
string_view password) {
auto credentials =
Base64Encode(ToString(login) + ":" + ToString(password));
return Auth("Basic", credentials);
}
RequestBuilder& RequestBuilder::AuthToken(const std::string& token) {
RequestBuilder& RequestBuilder::AuthToken(string_view token) {
return Auth("Token", token);
}