Refine authorization.
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user