avoid constantly creating ssl context
This commit is contained in:
parent
a54cb78427
commit
a582ff2f28
@ -87,7 +87,10 @@ std::string base64_encode(const std::string& input) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
HTTPSClient::HTTPSClient(const std::string& certFile, const std::string& keyFile)
|
HTTPSClient::HTTPSClient(const std::string& certFile, const std::string& keyFile)
|
||||||
: certFile(certFile), keyFile(keyFile) {}
|
: certFile(certFile), keyFile(keyFile) {
|
||||||
|
// SSL and TCP setup
|
||||||
|
sslCtx = createSSLContext();
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<boost::asio::ssl::context> HTTPSClient::createSSLContext() {
|
std::shared_ptr<boost::asio::ssl::context> HTTPSClient::createSSLContext() {
|
||||||
auto sslCtx = std::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::tlsv13_client);
|
auto sslCtx = std::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::tlsv13_client);
|
||||||
@ -128,8 +131,6 @@ std::string HTTPSClient::sendRequest(const std::string& server, const std::strin
|
|||||||
try {
|
try {
|
||||||
boost::asio::io_context ioContext;
|
boost::asio::io_context ioContext;
|
||||||
|
|
||||||
// SSL and TCP setup
|
|
||||||
auto sslCtx = createSSLContext();
|
|
||||||
auto stream = std::make_shared<boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>(ioContext, *sslCtx);
|
auto stream = std::make_shared<boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>(ioContext, *sslCtx);
|
||||||
auto resolver = std::make_shared<boost::asio::ip::tcp::resolver>(ioContext);
|
auto resolver = std::make_shared<boost::asio::ip::tcp::resolver>(ioContext);
|
||||||
auto results = resolver->resolve(server, port);
|
auto results = resolver->resolve(server, port);
|
||||||
@ -258,11 +259,11 @@ std::string HTTPSClient::sendRequest(const std::string& server, const std::strin
|
|||||||
// Store cookies from the response
|
// Store cookies from the response
|
||||||
if (res->base().count(http::field::set_cookie) > 0) {
|
if (res->base().count(http::field::set_cookie) > 0) {
|
||||||
auto set_cookie_value = res->base()[http::field::set_cookie].to_string();
|
auto set_cookie_value = res->base()[http::field::set_cookie].to_string();
|
||||||
std::istringstream stream(set_cookie_value);
|
std::istringstream streamdata(set_cookie_value);
|
||||||
std::string token;
|
std::string token;
|
||||||
|
|
||||||
// Parse "Set-Cookie" field for name-value pairs
|
// Parse "Set-Cookie" field for name-value pairs
|
||||||
while (std::getline(stream, token, ';')) {
|
while (std::getline(streamdata, token, ';')) {
|
||||||
auto pos = token.find('=');
|
auto pos = token.find('=');
|
||||||
if (pos != std::string::npos) {
|
if (pos != std::string::npos) {
|
||||||
std::string name = token.substr(0, pos);
|
std::string name = token.substr(0, pos);
|
||||||
@ -290,7 +291,6 @@ std::string HTTPSClient::sendPostRequest(const std::string& server, const std::s
|
|||||||
boost::asio::io_context ioContext;
|
boost::asio::io_context ioContext;
|
||||||
|
|
||||||
// SSL and TCP setup
|
// SSL and TCP setup
|
||||||
auto sslCtx = createSSLContext();
|
|
||||||
auto stream = std::make_shared<boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>(ioContext, *sslCtx);
|
auto stream = std::make_shared<boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>(ioContext, *sslCtx);
|
||||||
auto resolver = std::make_shared<boost::asio::ip::tcp::resolver>(ioContext);
|
auto resolver = std::make_shared<boost::asio::ip::tcp::resolver>(ioContext);
|
||||||
auto results = resolver->resolve(server, port);
|
auto results = resolver->resolve(server, port);
|
||||||
|
@ -47,7 +47,8 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::unordered_map<std::string, std::string> cookies;
|
std::unordered_map<std::string, std::string> cookies;
|
||||||
|
std::shared_ptr<boost::asio::ssl::context> sslCtx;
|
||||||
|
|
||||||
std::string certFile;
|
std::string certFile;
|
||||||
std::string keyFile;
|
std::string keyFile;
|
||||||
std::string server;
|
std::string server;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user