Refine authorization.

This commit is contained in:
Chunting Gu
2019-04-16 17:38:27 +08:00
parent 8b6ce4a0c1
commit 3742143657
6 changed files with 62 additions and 27 deletions
+16
View File
@@ -1,5 +1,6 @@
#include "webcc/http_client_session.h"
#include "webcc/base64.h"
#include "webcc/logger.h"
#include "webcc/url.h"
@@ -9,6 +10,21 @@ HttpClientSession::HttpClientSession() {
InitHeaders();
}
void HttpClientSession::Auth(const std::string& type,
const std::string& credentials) {
headers_.Set(http::headers::kAuthorization, type + " " + credentials);
}
void HttpClientSession::AuthBasic(const std::string& login,
const std::string& password) {
auto credentials = Base64Encode(login + ":" + password);
return Auth("Basic", credentials);
}
void HttpClientSession::AuthToken(const std::string& token) {
return Auth("Token", token);
}
HttpResponsePtr HttpClientSession::Request(HttpRequestPtr request) {
assert(request);
+17 -8
View File
@@ -20,14 +20,6 @@ public:
~HttpClientSession() = default;
void set_content_type(const std::string& content_type) {
content_type_ = content_type;
}
void set_charset(const std::string& charset) {
charset_ = charset;
}
void set_ssl_verify(bool ssl_verify) {
ssl_verify_ = ssl_verify;
}
@@ -46,6 +38,23 @@ public:
headers_.Set(key, value);
}
void set_content_type(const std::string& content_type) {
content_type_ = content_type;
}
void set_charset(const std::string& charset) {
charset_ = charset;
}
// Set authorization.
void Auth(const std::string& type, const std::string& credentials);
// Set Basic authorization.
void AuthBasic(const std::string& login, const std::string& password);
// Set Token authorization.
void AuthToken(const std::string& token);
// Send a request.
// Please use HttpRequestBuilder to build the request.
HttpResponsePtr Request(HttpRequestPtr request);
+8 -8
View File
@@ -23,10 +23,18 @@ public:
~HttpRequest() override = default;
const std::string& method() const {
return method_;
}
void set_method(const std::string& method) {
method_ = method;
}
const Url& url() const {
return url_;
}
void set_url(const std::string& url) {
url_.Init(url);
}
@@ -35,14 +43,6 @@ public:
url_.AddQuery(key, value);
}
const std::string& method() const {
return method_;
}
const Url& url() const {
return url_;
}
const std::string& host() const {
return url_.host();
}
+4
View File
@@ -69,6 +69,10 @@ HttpRequestBuilder& HttpRequestBuilder::AuthBasic(const std::string& login,
return Auth("Basic", credentials);
}
HttpRequestBuilder& HttpRequestBuilder::AuthToken(const std::string& token) {
return Auth("Token", token);
}
void HttpRequestBuilder::SetContent(HttpRequestPtr request,
std::string&& data) {
if (gzip_ && data.size() > kGzipThreshold) {
+2
View File
@@ -105,6 +105,8 @@ public:
HttpRequestBuilder& AuthBasic(const std::string& login,
const std::string& password);
HttpRequestBuilder& AuthToken(const std::string& token);
private:
void SetContent(HttpRequestPtr request, std::string&& data);