// TJP COPYRIGHT HEADER #pragma once #include "Internet.hpp" #include "Internet+Internal.hpp" #include #include #include #include #include #include namespace tjp::core::internet { struct Queue { struct Internal; StrongPtr i; Queue(); ~Queue(); void prepare(); Future execute(internal::RequestType, const String &url, Data &&data, const HttpOptions &o = makeEmptyOptions()); Future get(const String &url, const HttpOptions &o = makeEmptyOptions()) { return execute(internal::RequestType::GET, url, {}, o); } Future post(const std::string &url, Data &&data, const HttpOptions &o = makeEmptyOptions()) { return execute(internal::RequestType::POST, url, std::move(data), o); } Future put(const std::string &url, Data &&data, const HttpOptions &o = makeEmptyOptions()) { return execute(internal::RequestType::PUT, url, std::move(data), o); } Future head(const std::string &url, const HttpOptions &o = makeEmptyOptions()) { return execute(internal::RequestType::HEAD, url, {}, o); } } ; struct MainQueue {}; template struct Queues { static Queue queue; static Future get(const String &url, const HttpOptions &o = makeEmptyOptions()) { return queue.execute(internal::RequestType::GET, url, {}, o); } static Future post(const std::string &url, Data &&data, const HttpOptions &o = makeEmptyOptions()) { return queue.execute(internal::RequestType::POST, url, std::move(data), o); } static Future put(const std::string &url, Data &&data, const HttpOptions &o = makeEmptyOptions()) { return queue.execute(internal::RequestType::PUT, url, std::move(data), o); } static Future head(const std::string &url, const HttpOptions &o = makeEmptyOptions()) { return queue.execute(internal::RequestType::HEAD, url, {}, o); } } ; template Queue Queues::queue; } // namespace #ifdef TJP_CORE_HEADER_ONLY #if defined(SYS_IOS) #include "ios/Queue.hpp" #else #include "curl/Queue.hpp" #endif #endif