/* * IXHttpClient.h * Author: Benjamin Sergeant * Copyright (c) 2019 Machine Zone, Inc. All rights reserved. */ #pragma once #include #include #include #include #include #include #include #include "IXSocket.h" #include "IXWebSocketHttpHeaders.h" namespace ix { using HttpResponse = std::tuple; using HttpParameters = std::map; class HttpClient { public: HttpClient(); ~HttpClient(); // Static methods ? HttpResponse get(const std::string& url, const WebSocketHttpHeaders& extraHeaders, bool followRedirects, bool verbose); HttpResponse post(const std::string& url, const WebSocketHttpHeaders& extraHeaders, const HttpParameters& httpParameters, bool followRedirects, bool verbose); HttpResponse head(const std::string& url, const WebSocketHttpHeaders& extraHeaders, bool followRedirects, bool verbose); private: HttpResponse request(const std::string& url, const std::string& verb, const WebSocketHttpHeaders& extraHeaders, const HttpParameters& httpParameters, bool followRedirects, bool verbose); std::string urlEncode(const std::string& value); std::shared_ptr _socket; }; }