Add HttpRequestBuilder to replace HttpRequestArgs
This commit is contained in:
@@ -65,8 +65,11 @@ void PrettyPrintJsonString(const std::string& str) {
|
||||
// List public events.
|
||||
void ListEvents(webcc::HttpClientSession& session) {
|
||||
try {
|
||||
auto r = session.Get(kUrlRoot + "/events");
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url(kUrlRoot + "/events")());
|
||||
|
||||
PRINT_JSON_STRING(r->content());
|
||||
|
||||
} catch (const webcc::Exception& e) {
|
||||
std::cout << e.what() << std::endl;
|
||||
}
|
||||
@@ -78,8 +81,11 @@ void ListEvents(webcc::HttpClientSession& session) {
|
||||
void ListUserFollowers(webcc::HttpClientSession& session,
|
||||
const std::string& user) {
|
||||
try {
|
||||
auto r = session.Get(kUrlRoot + "/users/" + user + "/followers");
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url(kUrlRoot + "/users/" + user + "/followers")());
|
||||
|
||||
PRINT_JSON_STRING(r->content());
|
||||
|
||||
} catch (const webcc::Exception& e) {
|
||||
std::cout << e.what() << std::endl;
|
||||
}
|
||||
@@ -93,8 +99,9 @@ void ListUserFollowers(webcc::HttpClientSession& session,
|
||||
void ListAuthUserFollowers(webcc::HttpClientSession& session,
|
||||
const std::string& auth) {
|
||||
try {
|
||||
auto r = session.Get(kUrlRoot + "/user/followers", {},
|
||||
{ "Authorization", auth });
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url(kUrlRoot + "/user/followers").
|
||||
header("Authorization", auth)());
|
||||
|
||||
PRINT_JSON_STRING(r->content());
|
||||
|
||||
@@ -109,8 +116,11 @@ void CreateAuthorization(webcc::HttpClientSession& session,
|
||||
|
||||
std::string data = "{'note': 'Webcc test', 'scopes': ['public_repo', 'repo', 'repo:status', 'user']}";
|
||||
|
||||
auto r = session.Post(kUrlRoot + "/authorizations", std::move(data), true,
|
||||
{"Authorization", auth});
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.Post().
|
||||
url(kUrlRoot + "/authorizations").
|
||||
data(std::move(data)).
|
||||
json(true).
|
||||
header("Authorization", auth)());
|
||||
|
||||
std::cout << r->content() << std::endl;
|
||||
|
||||
@@ -125,7 +135,6 @@ int main() {
|
||||
WEBCC_LOG_INIT("", webcc::LOG_CONSOLE);
|
||||
|
||||
webcc::HttpClientSession session;
|
||||
|
||||
session.set_ssl_verify(kSslVerify);
|
||||
|
||||
ListEvents(session);
|
||||
|
||||
+24
-50
@@ -19,55 +19,27 @@ bool kSslVerify = true;
|
||||
// Examples
|
||||
|
||||
void ExampleBasic() {
|
||||
HttpClientSession session;
|
||||
|
||||
auto r = session.Request(HttpRequestArgs{"GET"}
|
||||
.url("http://httpbin.org/get")
|
||||
.parameters({"key1", "value1", "key2", "value2"})
|
||||
.headers({"Accept", "application/json"})
|
||||
.buffer_size(1000));
|
||||
webcc::HttpClientSession session;
|
||||
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url("http://httpbin.org/get").
|
||||
parameter("key1", "value1").
|
||||
parameter("key2", "value2").
|
||||
header("Accept", "application/json").
|
||||
buffer(1000)());
|
||||
|
||||
std::cout << r->content() << std::endl;
|
||||
}
|
||||
|
||||
// If you want to create the args object firstly, there might be an extra
|
||||
// call to its move constructor (maybe only for MSVC).
|
||||
// - constructor: HttpRequestArgs{ "GET" }
|
||||
// - move constructor: auto args = ...
|
||||
void ExampleArgs() {
|
||||
HttpClientSession session;
|
||||
|
||||
auto args = HttpRequestArgs{"GET"}
|
||||
.url("http://httpbin.org/get")
|
||||
.parameters({"key1", "value1", "key2", "value2"})
|
||||
.headers({"Accept", "application/json"})
|
||||
.buffer_size(1000);
|
||||
|
||||
// Note the std::move().
|
||||
session.Request(std::move(args));
|
||||
}
|
||||
|
||||
// Use pre-defined wrappers.
|
||||
void ExampleWrappers() {
|
||||
HttpClientSession session;
|
||||
|
||||
session.Get("http://httpbin.org/get", {"key1", "value1", "key2", "value2"},
|
||||
{"Accept", "application/json"},
|
||||
HttpRequestArgs{}.buffer_size(1000));
|
||||
|
||||
session.Post("http://httpbin.org/post", "{'key': 'value'}", true,
|
||||
{"Accept", "application/json"});
|
||||
}
|
||||
|
||||
// HTTPS is auto-detected from the URL scheme.
|
||||
void ExampleHttps() {
|
||||
HttpClientSession session;
|
||||
webcc::HttpClientSession session;
|
||||
session.set_ssl_verify(kSslVerify);
|
||||
|
||||
auto r = session.Request(HttpRequestArgs{"GET"}
|
||||
.url("https://httpbin.org/get")
|
||||
.parameters({"key1", "value1", "key2", "value2"})
|
||||
.headers({"Accept", "application/json"})
|
||||
.ssl_verify(kSslVerify));
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url("https://httpbin.org/get").
|
||||
parameter("key1", "value1").
|
||||
header("Accept", "application/json")());
|
||||
|
||||
std::cout << r->content() << std::endl;
|
||||
}
|
||||
@@ -86,27 +58,29 @@ void ExampleHttps() {
|
||||
//
|
||||
void ExampleKeepAlive(const std::string& url) {
|
||||
HttpClientSession session;
|
||||
session.set_ssl_verify(kSslVerify);
|
||||
|
||||
// Keep-Alive
|
||||
session.Request(webcc::HttpRequestArgs("GET").url(url).
|
||||
ssl_verify(kSslVerify));
|
||||
session.Request(webcc::HttpRequestBuilder{}.Get().url(url)());
|
||||
|
||||
// Close
|
||||
session.Request(webcc::HttpRequestArgs("GET").url(url).
|
||||
ssl_verify(kSslVerify).keep_alive(false));
|
||||
session.Request(webcc::HttpRequestBuilder{}.Get().url(url).keep_alive(false)());
|
||||
|
||||
// Keep-Alive
|
||||
session.Request(webcc::HttpRequestArgs("GET").url(url).
|
||||
ssl_verify(kSslVerify));
|
||||
session.Request(webcc::HttpRequestBuilder{}.Get().url(url)());
|
||||
}
|
||||
|
||||
void ExampleCompression() {
|
||||
HttpClientSession session;
|
||||
|
||||
auto r = session.Get("http://httpbin.org/gzip");
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.
|
||||
Get().url("http://httpbin.org/gzip")());
|
||||
|
||||
std::cout << r->content() << std::endl;
|
||||
|
||||
r = session.Get("http://httpbin.org/deflate");
|
||||
r = session.Request(webcc::HttpRequestBuilder{}.
|
||||
Get().url("http://httpbin.org/deflate")());
|
||||
|
||||
std::cout << r->content() << std::endl;
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,8 @@ public:
|
||||
|
||||
bool ListBooks(std::list<Book>* books) {
|
||||
try {
|
||||
auto r = session_.Get(url_ + "/books");
|
||||
auto r = session_.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url(url_ + "/books")());
|
||||
|
||||
if (!CheckStatus(r, webcc::http::Status::kOK)) {
|
||||
// Response HTTP status error.
|
||||
@@ -86,7 +87,10 @@ public:
|
||||
req_json["price"] = price;
|
||||
|
||||
try {
|
||||
auto r = session_.Post(url_ + "/books", JsonToString(req_json), true);
|
||||
auto r = session_.Request(webcc::HttpRequestBuilder{}.Post().
|
||||
url(url_ + "/books").
|
||||
data(JsonToString(req_json)).
|
||||
json(true)());
|
||||
|
||||
if (!CheckStatus(r, webcc::http::Status::kCreated)) {
|
||||
return false;
|
||||
@@ -114,7 +118,8 @@ public:
|
||||
|
||||
bool GetBook(const std::string& id, Book* book) {
|
||||
try {
|
||||
auto r = session_.Get(url_ + "/books/" + id);
|
||||
auto r = session_.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url(url_ + "/books/" + id)());
|
||||
|
||||
if (!CheckStatus(r, webcc::http::Status::kOK)) {
|
||||
return false;
|
||||
@@ -135,7 +140,10 @@ public:
|
||||
json["price"] = price;
|
||||
|
||||
try {
|
||||
auto r = session_.Put(url_ + "/books/" + id, JsonToString(json), true);
|
||||
auto r = session_.Request(webcc::HttpRequestBuilder{}.Put().
|
||||
url(url_ + "/books/" + id).
|
||||
data(JsonToString(json)).
|
||||
json(true)());
|
||||
|
||||
if (!CheckStatus(r, webcc::http::Status::kOK)) {
|
||||
return false;
|
||||
@@ -151,7 +159,8 @@ public:
|
||||
|
||||
bool DeleteBook(const std::string& id) {
|
||||
try {
|
||||
auto r = session_.Delete(url_ + "/books/" + id);
|
||||
auto r = session_.Request(webcc::HttpRequestBuilder{}.Delete().
|
||||
url(url_ + "/books/" + id)());
|
||||
|
||||
if (!CheckStatus(r, webcc::http::Status::kOK)) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user