2013-03-15 21:46:16 +01:00
|
|
|
/* 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
|
2013-03-24 22:56:57 +01:00
|
|
|
* http://www.wtfpl.net/ for more details. */
|
2013-03-15 21:46:16 +01:00
|
|
|
|
|
|
|
#ifndef API_H
|
|
|
|
#define API_H
|
|
|
|
|
2013-03-23 19:12:49 +01:00
|
|
|
#include "globalconstants.h"
|
|
|
|
|
2013-03-15 21:46:16 +01:00
|
|
|
#include <iostream>
|
|
|
|
#include <vector>
|
|
|
|
#include <curl/curl.h>
|
|
|
|
extern "C" {
|
|
|
|
#include <oauth.h>
|
|
|
|
}
|
|
|
|
#include <cstring>
|
|
|
|
|
|
|
|
class gameFile {
|
|
|
|
public:
|
2013-03-23 19:12:49 +01:00
|
|
|
gameFile(const bool& t_updated, const std::string& t_id, const std::string& t_name, const std::string& t_path, const std::string& t_size, const unsigned int& t_language = GlobalConstants::LANGUAGE_EN);
|
2013-03-15 21:46:16 +01:00
|
|
|
bool updated;
|
|
|
|
std::string id;
|
|
|
|
std::string name;
|
|
|
|
std::string path;
|
|
|
|
std::string size;
|
2013-03-23 14:42:09 +01:00
|
|
|
unsigned int language;
|
2013-03-15 21:46:16 +01:00
|
|
|
virtual ~gameFile();
|
|
|
|
};
|
|
|
|
|
|
|
|
class gameDetails {
|
|
|
|
public:
|
2013-03-15 22:33:53 +01:00
|
|
|
std::vector<gameFile> extras;
|
|
|
|
std::vector<gameFile> installers;
|
2013-05-15 00:28:37 +02:00
|
|
|
std::vector<gameFile> patches;
|
2013-03-15 21:46:16 +01:00
|
|
|
std::string gamename;
|
|
|
|
std::string title;
|
|
|
|
std::string icon;
|
|
|
|
};
|
|
|
|
|
|
|
|
class userDetails {
|
|
|
|
public:
|
|
|
|
std::string avatar_small;
|
|
|
|
std::string avatar_big;
|
|
|
|
std::string username;
|
|
|
|
std::string email;
|
|
|
|
unsigned long long id;
|
|
|
|
int notifications_forum;
|
|
|
|
int notifications_games;
|
|
|
|
int notifications_messages;
|
|
|
|
};
|
|
|
|
|
|
|
|
class apiConfig {
|
|
|
|
public:
|
|
|
|
std::string oauth_authorize_temp_token;
|
|
|
|
std::string oauth_get_temp_token;
|
|
|
|
std::string oauth_get_token;
|
|
|
|
std::string get_user_games;
|
|
|
|
std::string get_user_details;
|
|
|
|
std::string get_installer_link;
|
|
|
|
std::string get_game_details;
|
|
|
|
std::string get_extra_link;
|
|
|
|
std::string set_app_status;
|
|
|
|
std::string oauth_token;
|
|
|
|
std::string oauth_secret;
|
|
|
|
};
|
|
|
|
|
|
|
|
size_t writeMemoryCallback(char *ptr, size_t size, size_t nmemb, void *userp);
|
|
|
|
|
|
|
|
class API
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
userDetails user;
|
|
|
|
|
2013-06-28 15:06:08 +02:00
|
|
|
API(const std::string& token,const std::string& secret);
|
2013-03-15 21:46:16 +01:00
|
|
|
int init();
|
|
|
|
int login(const std::string& email, const std::string& password);
|
|
|
|
int getAPIConfig();
|
|
|
|
std::string getResponse(const std::string& url);
|
|
|
|
std::string getResponseOAuth(const std::string& url);
|
|
|
|
int getUserDetails();
|
|
|
|
int getGames();
|
2013-04-25 09:48:10 +02:00
|
|
|
gameDetails getGameDetails(const std::string& game_name, const unsigned int& type = GlobalConstants::PLATFORM_WINDOWS, const unsigned int& lang = GlobalConstants::LANGUAGE_EN);
|
2013-03-15 21:46:16 +01:00
|
|
|
std::string getInstallerLink(const std::string& game_name, const std::string& id);
|
|
|
|
std::string getExtraLink(const std::string& game_name, const std::string& id);
|
2013-05-15 00:28:37 +02:00
|
|
|
std::string getPatchLink(const std::string& game_name, const std::string& id);
|
2013-03-15 21:46:16 +01:00
|
|
|
std::string getXML(const std::string& game_name, const std::string& id);
|
|
|
|
void clearError();
|
|
|
|
bool getError() { return this->error; };
|
|
|
|
std::string getErrorMessage() { return this->error_message; };
|
2013-05-04 18:46:42 +02:00
|
|
|
std::string getToken() { return this->config.oauth_token; };
|
|
|
|
std::string getSecret() { return this->config.oauth_secret; };
|
2013-06-28 15:06:08 +02:00
|
|
|
template <typename T> CURLcode curlSetOpt(CURLoption option, T value) { return curl_easy_setopt(this->curlhandle, option, value); };
|
2013-03-15 21:46:16 +01:00
|
|
|
virtual ~API();
|
|
|
|
protected:
|
|
|
|
private:
|
2013-05-04 18:46:42 +02:00
|
|
|
apiConfig config;
|
2013-03-15 21:46:16 +01:00
|
|
|
CURL* curlhandle;
|
|
|
|
void setError(const std::string& err);
|
|
|
|
bool error;
|
|
|
|
std::string error_message;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // API_H
|