38 lines
790 B
C++
38 lines
790 B
C++
#pragma once
|
|
|
|
#include <openssl/err.h>
|
|
#include <openssl/ssl.h>
|
|
|
|
#include <string>
|
|
#include <unordered_map>
|
|
|
|
|
|
class HttpClient {
|
|
// TODO at this moment only https is implemented
|
|
|
|
private:
|
|
SSL *ssl;
|
|
int sock;
|
|
|
|
std::string full_url, proto, server, port, uri, params, href;
|
|
std::basic_string<char> ssl_read_packet;
|
|
std::unordered_map<std::string, std::string> headers_map;
|
|
|
|
public:
|
|
HttpClient();
|
|
|
|
std::pair<int, std::string>
|
|
doGetRequest(const std::string &url, const std::unordered_map<std::string, std::string> &headers);
|
|
|
|
private:
|
|
std::string inetAddress(std::string hostname);
|
|
|
|
int sslRecvPacket();
|
|
|
|
int sslSendPacket(std::string buf);
|
|
|
|
int sslRequest(const std::string &server_name, const std::string &request);
|
|
|
|
void log_ssl();
|
|
};
|