#include "http_parser.h" #include "socket.h" namespace HTTP{ class Downloader{ public: Downloader(){progressCallback = 0;} std::string &data(); void doRequest(const HTTP::URL &link); bool get(const std::string &link); bool get(const HTTP::URL &link, uint8_t maxRecursiveDepth = 6); std::string getHeader(const std::string &headerName); std::string &getStatusText(); uint32_t getStatusCode(); bool isOk(); bool (*progressCallback)(); ///< Called every time the socket stalls, up to 4X per second. void setHeader(const std::string &name, const std::string &val); void clearHeaders(); Parser &getHTTP(); Socket::Connection &getSocket(); private: std::map extraHeaders; ///< Holds extra headers to sent with request std::string connectedHost; ///< Currently connected host name uint32_t connectedPort; ///< Currently connected port number Parser H; ///< HTTP parser for downloader Socket::Connection S; ///< TCP socket for downloader }; }