summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortastytea2020-01-08 16:46:27 +0100
committertastytea2020-01-08 16:46:27 +0100
commit1f78b00205f885c6becdbb51688393cd37573899 (patch)
tree4c03cb30162cd5cc68432b4339a7887743a150dd
parent2ab0018df9b2f8d17278d05095c1ac0428b93aa4 (diff)
downloadmastodonpp-1f78b00205f885c6becdbb51688393cd37573899.tar
mastodonpp-1f78b00205f885c6becdbb51688393cd37573899.tar.gz
mastodonpp-1f78b00205f885c6becdbb51688393cd37573899.zip
Replace string with string_view where possible.
-rw-r--r--include/api.hpp2
-rw-r--r--include/connection.hpp11
-rw-r--r--include/curl_wrapper.hpp4
-rw-r--r--include/instance.hpp4
-rw-r--r--src/connection.cpp6
-rw-r--r--src/curl_wrapper.cpp20
-rw-r--r--src/instance.cpp2
7 files changed, 27 insertions, 22 deletions
diff --git a/include/api.hpp b/include/api.hpp
index e508fa1..7c89af4 100644
--- a/include/api.hpp
+++ b/include/api.hpp
@@ -312,7 +312,7 @@ public:
[[nodiscard]]
inline string_view to_string_view() const
{
- return _endpoint_map.at(_endpoint).data();
+ return _endpoint_map.at(_endpoint);
}
private:
diff --git a/include/connection.hpp b/include/connection.hpp
index 90027fb..fcb2a23 100644
--- a/include/connection.hpp
+++ b/include/connection.hpp
@@ -33,7 +33,12 @@ using std::string;
using std::string_view;
using std::variant;
-using endpoint_variant = variant<API::endpoint_type,string>;
+/*!
+ * @brief An endpoint. Either API::endpoint_type or `std::string_view`.
+ *
+ * @since 0.1.0
+ */
+using endpoint_variant = variant<API::endpoint_type,string_view>;
/*!
* @brief Represents a connection to an instance. Used for requests.
@@ -66,7 +71,7 @@ public:
* })};
* @endcode
*
- * @param endpoint Endpoint as API::endpoint_type or `std::string`.
+ * @param endpoint Endpoint as API::endpoint_type or `std::string_view`.
* @param parameters A map of parameters.
*
*
@@ -83,7 +88,7 @@ public:
* auto answer{connection.get("/api/v1/instance")};
* @endcode
*
- * @param endpoint Endpoint as API::endpoint_type or `std::string`.
+ * @param endpoint Endpoint as API::endpoint_type or `std::string_view`.
*
* @since 0.1.0
*/
diff --git a/include/curl_wrapper.hpp b/include/curl_wrapper.hpp
index 146e481..ecc30e1 100644
--- a/include/curl_wrapper.hpp
+++ b/include/curl_wrapper.hpp
@@ -58,13 +58,13 @@ enum class http_method
* parametermap parameters
* {
* {"id", "12"},
- * {"poll[options]", vector<string>{"Yes", "No", "Maybe"}}
+ * {"poll[options]", vector<string_view>{"Yes", "No", "Maybe"}}
* };
* @endcode
*
* @since 0.1.0
*/
-using parametermap = map<string, variant<string, vector<string>>>;
+using parametermap = map<string_view, variant<string_view, vector<string_view>>>;
/*!
* @brief Handles the details of network connections.
diff --git a/include/instance.hpp b/include/instance.hpp
index 914a470..cecb324 100644
--- a/include/instance.hpp
+++ b/include/instance.hpp
@@ -50,8 +50,8 @@ public:
*
* @since 0.1.0
*/
- explicit Instance(const string_view &hostname,
- const string_view &access_token);
+ explicit Instance(const string_view hostname,
+ const string_view access_token);
/*!
* @brief Returns the hostname.
diff --git a/src/connection.cpp b/src/connection.cpp
index 794247b..f471c4e 100644
--- a/src/connection.cpp
+++ b/src/connection.cpp
@@ -29,16 +29,16 @@ Connection::Connection(Instance &instance)
answer_type Connection::get(const endpoint_variant &endpoint,
const parametermap &parameters)
{
- string uri{[&]
+ const string uri{[&]
{
if (holds_alternative<API::endpoint_type>(endpoint))
{
return string(_baseuri).append(
API{std::get<API::endpoint_type>(endpoint)}.to_string_view());
}
-
- return std::get<string>(endpoint);
+ return string(std::get<string_view>(endpoint));
}()};
+
return make_request(http_method::GET, uri, parameters);
}
diff --git a/src/curl_wrapper.cpp b/src/curl_wrapper.cpp
index 1e1040b..7b0eb79 100644
--- a/src/curl_wrapper.cpp
+++ b/src/curl_wrapper.cpp
@@ -88,32 +88,32 @@ answer_type CURLWrapper::make_request(const http_method &method, string uri,
if (pos != string::npos)
{
uri.replace(pos, param.first.size() + 2,
- get<string>(param.second));
+ get<string_view>(param.second));
}
continue;
}
static bool first{true};
if (first)
{
- uri.append("?");
+ uri += "?";
first = false;
}
else
{
- uri.append("&");
+ uri += "&";
}
- if (holds_alternative<string>(param.second))
+ if (holds_alternative<string_view>(param.second))
{
- uri.append(param.first + '=' + get<string>(param.second));
+ ((uri += param.first) += "=") += get<string_view>(param.second);
}
else
{
- for (const auto &arg : get<vector<string>>(param.second))
+ for (const auto &arg : get<vector<string_view>>(param.second))
{
- uri.append(param.first + "[]=" + arg);
- if (arg != *get<vector<string>>(param.second).rbegin())
+ ((uri += param.first) += "[]=") += arg;
+ if (arg != *get<vector<string_view>>(param.second).rbegin())
{
- uri.append("&");
+ uri += "&";
}
}
}
@@ -238,7 +238,7 @@ void CURLWrapper::setup_curl()
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg)
code = curl_easy_setopt(_connection, CURLOPT_USERAGENT,
- string("mastorss/").append(version).c_str());
+ (string("mastorss/") += version).c_str());
if (code != CURLE_OK)
{
throw CURLException{code, "Failed to set User-Agent",
diff --git a/src/instance.cpp b/src/instance.cpp
index e10675f..72369e5 100644
--- a/src/instance.cpp
+++ b/src/instance.cpp
@@ -23,7 +23,7 @@ namespace mastodonpp
using std::stoull;
-Instance::Instance(const string_view &hostname, const string_view &access_token)
+Instance::Instance(const string_view hostname, const string_view access_token)
: _hostname{hostname}
, _baseuri{"https://" + _hostname}
, _access_token{access_token}