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
+26 -27
View File
@@ -39,44 +39,44 @@ public:
RequestBuilder(const RequestBuilder&) = delete;
RequestBuilder& operator=(const RequestBuilder&) = delete;
// Build
// Build and return the request object.
RequestPtr operator()();
RequestBuilder& Method(const std::string& method) {
method_ = method;
RequestBuilder& Method(string_view method) {
method_ = ToString(method);
return *this;
}
RequestBuilder& Get(const std::string& url, bool encode = false) {
RequestBuilder& Get(string_view url, bool encode = false) {
return Method(methods::kGet).Url(url, encode);
}
RequestBuilder& Head(const std::string& url, bool encode = false) {
RequestBuilder& Head(string_view url, bool encode = false) {
return Method(methods::kHead).Url(url, encode);
}
RequestBuilder& Post(const std::string& url, bool encode = false) {
RequestBuilder& Post(string_view url, bool encode = false) {
return Method(methods::kPost).Url(url, encode);
}
RequestBuilder& Put(const std::string& url, bool encode = false) {
RequestBuilder& Put(string_view url, bool encode = false) {
return Method(methods::kPut).Url(url, encode);
}
RequestBuilder& Delete(const std::string& url, bool encode = false) {
RequestBuilder& Delete(string_view url, bool encode = false) {
return Method(methods::kDelete).Url(url, encode);
}
RequestBuilder& Patch(const std::string& url, bool encode = false) {
RequestBuilder& Patch(string_view url, bool encode = false) {
return Method(methods::kPatch).Url(url, encode);
}
RequestBuilder& Url(const std::string& url, bool encode = false) {
RequestBuilder& Url(string_view url, bool encode = false) {
url_ = webcc::Url{ url, encode };
return *this;
}
RequestBuilder& Port(const std::string& port) {
RequestBuilder& Port(string_view port) {
url_.set_port(port);
return *this;
}
@@ -87,25 +87,25 @@ public:
}
// Append a piece to the path.
RequestBuilder& Path(const std::string& path, bool encode = false) {
RequestBuilder& Path(string_view path, bool encode = false) {
url_.AppendPath(path, encode);
return *this;
}
// Append a parameter to the query.
RequestBuilder& Query(const std::string& key, const std::string& value,
RequestBuilder& Query(string_view key, string_view value,
bool encode = false) {
url_.AppendQuery(key, value, encode);
return *this;
}
RequestBuilder& MediaType(const std::string& media_type) {
media_type_ = media_type;
RequestBuilder& MediaType(string_view media_type) {
media_type_ = ToString(media_type);
return *this;
}
RequestBuilder& Charset(const std::string& charset) {
charset_ = charset;
RequestBuilder& Charset(string_view charset) {
charset_ = ToString(charset);
return *this;
}
@@ -123,7 +123,7 @@ public:
// Set (comma separated) content types to accept.
// E.g., "application/json", "text/html, application/xhtml+xml".
RequestBuilder& Accept(const std::string& content_types) {
RequestBuilder& Accept(string_view content_types) {
return Header(headers::kAccept, content_types);
}
@@ -156,26 +156,25 @@ public:
}
// Add a form part of file.
RequestBuilder& FormFile(const std::string& name, const fs::path& path,
const std::string& media_type = "");
RequestBuilder& FormFile(string_view name, const fs::path& path,
string_view media_type = "");
// Add a form part of string data.
RequestBuilder& FormData(const std::string& name, std::string&& data,
const std::string& media_type = "");
RequestBuilder& FormData(string_view name, std::string&& data,
string_view media_type = "");
RequestBuilder& Header(const std::string& key, const std::string& value);
RequestBuilder& Header(string_view key, string_view value);
RequestBuilder& KeepAlive(bool keep_alive = true) {
keep_alive_ = keep_alive;
return *this;
}
RequestBuilder& Auth(const std::string& type, const std::string& credentials);
RequestBuilder& Auth(string_view type, string_view credentials);
RequestBuilder& AuthBasic(const std::string& login,
const std::string& password);
RequestBuilder& AuthBasic(string_view login, string_view password);
RequestBuilder& AuthToken(const std::string& token);
RequestBuilder& AuthToken(string_view token);
// Add the `Date` header to the request.
RequestBuilder& Date();