lgogdownloader/include/galaxyapi.h
Sude 8cbc62b8cd Galaxy: Fix downloading DLC files
Add product id from depot JSON to galaxyDepotItem struct

Previously downloader failed to download DLC files because DLCs have different product id than base game
Fix downloading DLC files by setting product id for each depot item
2017-03-06 06:58:11 +02:00

64 lines
2.1 KiB
C++

/* 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 <iostream>
#include <vector>
#include <cstring>
#include <curl/curl.h>
#include <sys/time.h>
struct galaxyDepotItemChunk
{
std::string md5_compressed;
std::string md5_uncompressed;
uintmax_t size_compressed;
uintmax_t size_uncompressed;
uintmax_t offset_compressed;
uintmax_t offset_uncompressed;
};
struct galaxyDepotItem
{
std::string path;
std::vector<galaxyDepotItemChunk> chunks;
uintmax_t totalSizeCompressed;
uintmax_t totalSizeUncompressed;
std::string md5;
std::string product_id;
};
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<galaxyDepotItem> 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