/* This program is free software. It comes without any warranty, to * the extent permitted by applicable law. You can redistribute it * and/or modify it under the terms of the Do What The Fuck You Want * To Public License, Version 2, as published by Sam Hocevar. See * http://www.wtfpl.net/ for more details. */ #ifndef GALAXYAPI_H #define GALAXYAPI_H #include "globalconstants.h" #include "globals.h" #include "config.h" #include "util.h" #include #include #include #include #include struct galaxyDepotItemChunk { std::string md5_compressed; std::string md5_uncompressed; off_t size_compressed; off_t size_uncompressed; }; struct galaxyDepotItem { std::string path; std::vector chunks; off_t totalSizeCompressed; off_t totalSizeUncompressed; std::string md5; }; class galaxyAPI { public: galaxyAPI(CurlConfig& conf); virtual ~galaxyAPI(); int init(); bool isTokenExpired(); bool refreshLogin(); Json::Value getProductBuilds(const std::string& product_id, const std::string& platform = "windows", const std::string& generation = "2"); Json::Value getManifestV1(const std::string& product_id, const std::string& build_id, const std::string& manifest_id = "repository", const std::string& platform = "windows"); Json::Value getManifestV2(std::string manifest_hash); Json::Value getSecureLink(const std::string& product_id, const std::string& path); std::string getResponse(const std::string& url, const bool& zlib_decompress = false); std::string hashToGalaxyPath(const std::string& hash); std::vector getDepotItemsVector(const std::string& hash); protected: private: CurlConfig curlConf; static size_t writeMemoryCallback(char *ptr, size_t size, size_t nmemb, void *userp); CURL* curlhandle; }; #endif // GALAXYAPI_H