1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#ifndef CLIENT_H
#define CLIENT_H
#include <queue>
#include <vector>
#include <list>
#include <fstream>
#include "Config.h"
#include "HTTP.h"
#include "preview/Comment.h"
#include "search/Thumbnail.h"
#include "client/SaveInfo.h"
#include "client/SaveFile.h"
#include "Singleton.h"
#include "User.h"
#include "cajun/reader.h"
#include "cajun/writer.h"
#include "cajun/elements.h"
enum LoginStatus {
LoginOkay, LoginError
};
enum RequestStatus {
RequestOkay, RequestFailure
};
class ClientListener;
class Client: public Singleton<Client> {
private:
void * versionCheckRequest;
bool updateAvailable;
std::string lastError;
list<string> stampIDs;
int lastStampTime;
int lastStampName;
//Auth session
User authUser;
//Thumbnail retreival
int thumbnailCacheNextID;
Thumbnail * thumbnailCache[THUMB_CACHE_SIZE];
void * activeThumbRequests[IMGCONNS];
int activeThumbRequestTimes[IMGCONNS];
int activeThumbRequestCompleteTimes[IMGCONNS];
std::string activeThumbRequestIDs[IMGCONNS];
void updateStamps();
void notifyUpdateAvailable();
public:
vector<ClientListener*> listeners;
//Config file handle
json::Object configDocument;
Client();
~Client();
void AddListener(ClientListener * listener);
RequestStatus ExecVote(int saveID, int direction);
RequestStatus UploadSave(SaveInfo * save);
SaveFile * GetStamp(string stampID);
void DeleteStamp(string stampID);
string AddStamp(GameSave * saveData);
vector<string> GetStamps(int start, int count);
int GetStampsCount();
SaveFile * GetFirstStamp();
unsigned char * GetSaveData(int saveID, int saveDate, int & dataLength);
LoginStatus Login(string username, string password, User & user);
void ClearThumbnailRequests();
std::vector<SaveInfo*> * SearchSaves(int start, int count, string query, string sort, string category, int & resultCount);
std::vector<SaveComment*> * GetComments(int saveID, int start, int count);
Thumbnail * GetPreview(int saveID, int saveDate);
Thumbnail * GetThumbnail(int saveID, int saveDate);
SaveInfo * GetSave(int saveID, int saveDate);
RequestStatus DeleteSave(int saveID);
RequestStatus ReportSave(int saveID, std::string message);
RequestStatus UnpublishSave(int saveID);
RequestStatus FavouriteSave(int saveID, bool favourite);
void SetAuthUser(User user);
User GetAuthUser();
std::vector<string> * RemoveTag(int saveID, string tag); //TODO RequestStatus
std::vector<string> * AddTag(int saveID, string tag);
std::string GetLastError() {
return lastError;
}
void Tick();
};
#endif // CLIENT_H
|