Add shortcuts for GET, POST, etc. to HttpClientSession.
This commit is contained in:
@@ -18,8 +18,6 @@ bool kSslVerify = false;
|
||||
bool kSslVerify = true;
|
||||
#endif
|
||||
|
||||
const std::size_t kBufferSize = 1500;
|
||||
|
||||
const std::string kUrlRoot = "https://api.github.com";
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -65,8 +63,7 @@ void PrettyPrintJsonString(const std::string& str) {
|
||||
// List public events.
|
||||
void ListEvents(webcc::HttpClientSession& session) {
|
||||
try {
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url(kUrlRoot + "/events")());
|
||||
auto r = session.Get(kUrlRoot + "/events");
|
||||
|
||||
PRINT_JSON_STRING(r->content());
|
||||
|
||||
@@ -81,8 +78,7 @@ void ListEvents(webcc::HttpClientSession& session) {
|
||||
void ListUserFollowers(webcc::HttpClientSession& session,
|
||||
const std::string& user) {
|
||||
try {
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url(kUrlRoot + "/users/" + user + "/followers")());
|
||||
auto r = session.Get(kUrlRoot + "/users/" + user + "/followers");
|
||||
|
||||
PRINT_JSON_STRING(r->content());
|
||||
|
||||
@@ -99,9 +95,8 @@ void ListUserFollowers(webcc::HttpClientSession& session,
|
||||
void ListAuthUserFollowers(webcc::HttpClientSession& session,
|
||||
const std::string& auth) {
|
||||
try {
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url(kUrlRoot + "/user/followers").
|
||||
header("Authorization", auth)());
|
||||
auto r = session.Get(kUrlRoot + "/user/followers", {},
|
||||
{"Authorization", auth});
|
||||
|
||||
PRINT_JSON_STRING(r->content());
|
||||
|
||||
@@ -116,11 +111,8 @@ void CreateAuthorization(webcc::HttpClientSession& session,
|
||||
|
||||
std::string data = "{'note': 'Webcc test', 'scopes': ['public_repo', 'repo', 'repo:status', 'user']}";
|
||||
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.Post().
|
||||
url(kUrlRoot + "/authorizations").
|
||||
data(std::move(data)).
|
||||
json(true).
|
||||
header("Authorization", auth)());
|
||||
auto r = session.Post(kUrlRoot + "/authorizations", std::move(data), true,
|
||||
{"Authorization", auth});
|
||||
|
||||
std::cout << r->content() << std::endl;
|
||||
|
||||
|
||||
+29
-18
@@ -20,13 +20,25 @@ bool kSslVerify = true;
|
||||
|
||||
void ExampleBasic() {
|
||||
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)());
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
// Use predefined shortcuts.
|
||||
void ExampleShortcut() {
|
||||
webcc::HttpClientSession session;
|
||||
|
||||
auto r = session.Get("http://httpbin.org/get",
|
||||
{"key1", "value1", "key2", "value2"},
|
||||
{"Accept", "application/json"});
|
||||
|
||||
std::cout << r->content() << std::endl;
|
||||
}
|
||||
@@ -36,10 +48,11 @@ void ExampleHttps() {
|
||||
webcc::HttpClientSession session;
|
||||
session.set_ssl_verify(kSslVerify);
|
||||
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url("https://httpbin.org/get").
|
||||
parameter("key1", "value1").
|
||||
header("Accept", "application/json")());
|
||||
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;
|
||||
}
|
||||
@@ -61,25 +74,23 @@ void ExampleKeepAlive(const std::string& url) {
|
||||
session.set_ssl_verify(kSslVerify);
|
||||
|
||||
// Keep-Alive
|
||||
session.Request(webcc::HttpRequestBuilder{}.Get().url(url)());
|
||||
session.Get(url);
|
||||
|
||||
// Close
|
||||
session.Request(webcc::HttpRequestBuilder{}.Get().url(url).keep_alive(false)());
|
||||
session.Get(url, {}, {"Connection", "Close"});
|
||||
|
||||
// Keep-Alive
|
||||
session.Request(webcc::HttpRequestBuilder{}.Get().url(url)());
|
||||
session.Get(url);
|
||||
}
|
||||
|
||||
void ExampleCompression() {
|
||||
HttpClientSession session;
|
||||
|
||||
auto r = session.Request(webcc::HttpRequestBuilder{}.
|
||||
Get().url("http://httpbin.org/gzip")());
|
||||
auto r = session.Get("http://httpbin.org/gzip");
|
||||
|
||||
std::cout << r->content() << std::endl;
|
||||
|
||||
r = session.Request(webcc::HttpRequestBuilder{}.
|
||||
Get().url("http://httpbin.org/deflate")());
|
||||
r = session.Get("http://httpbin.org/deflate");
|
||||
|
||||
std::cout << r->content() << std::endl;
|
||||
}
|
||||
|
||||
@@ -55,8 +55,7 @@ public:
|
||||
|
||||
bool ListBooks(std::list<Book>* books) {
|
||||
try {
|
||||
auto r = session_.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url(url_ + "/books")());
|
||||
auto r = session_.Get(url_ + "/books");
|
||||
|
||||
if (!CheckStatus(r, webcc::http::Status::kOK)) {
|
||||
// Response HTTP status error.
|
||||
@@ -87,10 +86,7 @@ public:
|
||||
req_json["price"] = price;
|
||||
|
||||
try {
|
||||
auto r = session_.Request(webcc::HttpRequestBuilder{}.Post().
|
||||
url(url_ + "/books").
|
||||
data(JsonToString(req_json)).
|
||||
json(true)());
|
||||
auto r = session_.Post(url_ + "/books", JsonToString(req_json), true);
|
||||
|
||||
if (!CheckStatus(r, webcc::http::Status::kCreated)) {
|
||||
return false;
|
||||
@@ -118,8 +114,7 @@ public:
|
||||
|
||||
bool GetBook(const std::string& id, Book* book) {
|
||||
try {
|
||||
auto r = session_.Request(webcc::HttpRequestBuilder{}.Get().
|
||||
url(url_ + "/books/" + id)());
|
||||
auto r = session_.Get(url_ + "/books/" + id);
|
||||
|
||||
if (!CheckStatus(r, webcc::http::Status::kOK)) {
|
||||
return false;
|
||||
@@ -140,10 +135,7 @@ public:
|
||||
json["price"] = price;
|
||||
|
||||
try {
|
||||
auto r = session_.Request(webcc::HttpRequestBuilder{}.Put().
|
||||
url(url_ + "/books/" + id).
|
||||
data(JsonToString(json)).
|
||||
json(true)());
|
||||
auto r = session_.Put(url_ + "/books/" + id, JsonToString(json), true);
|
||||
|
||||
if (!CheckStatus(r, webcc::http::Status::kOK)) {
|
||||
return false;
|
||||
@@ -159,8 +151,7 @@ public:
|
||||
|
||||
bool DeleteBook(const std::string& id) {
|
||||
try {
|
||||
auto r = session_.Request(webcc::HttpRequestBuilder{}.Delete().
|
||||
url(url_ + "/books/" + id)());
|
||||
auto r = session_.Delete(url_ + "/books/" + id);
|
||||
|
||||
if (!CheckStatus(r, webcc::http::Status::kOK)) {
|
||||
return false;
|
||||
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
: sleep_seconds_(sleep_seconds) {
|
||||
}
|
||||
|
||||
public:
|
||||
protected:
|
||||
// Get a list of books based on query parameters.
|
||||
void Get(const webcc::UrlQuery& query, webcc::RestResponse* response) final;
|
||||
|
||||
@@ -64,7 +64,7 @@ public:
|
||||
: sleep_seconds_(sleep_seconds) {
|
||||
}
|
||||
|
||||
public:
|
||||
protected:
|
||||
// Get the detailed information of a book.
|
||||
void Get(const webcc::UrlMatches& url_matches,
|
||||
const webcc::UrlQuery& query,
|
||||
|
||||
Reference in New Issue
Block a user