OpenMoHAA 0.82.0
Loading...
Searching...
No Matches
sake.h
1
3#ifndef __SAKE_H__
4#define __SAKE_H__
5
6
9#include "../common/gsCommon.h"
10
11
14#if defined(__cplusplus)
15extern "C" {
16#endif
17
18
21#ifndef SAKE_CALL
22 #define SAKE_CALL
23#endif
24
25
28// URL for sake webservice
29#define SAKE_MAX_URL_LENGTH 128
30extern char sakeiSoapUrl[SAKE_MAX_URL_LENGTH];
31
34// General
35typedef struct SAKEInternal *SAKE;
36
37typedef enum
38{
39 SAKEStartupResult_SUCCESS,
40 SAKEStartupResult_NOT_AVAILABLE,
41 SAKEStartupResult_CORE_SHUTDOWN,
42 SAKEStartupResult_OUT_OF_MEMORY
43} SAKEStartupResult;
44
45SAKEStartupResult SAKE_CALL sakeStartup(SAKE *sakePtr);
46void SAKE_CALL sakeShutdown(SAKE sake);
47
48
51// Authentication
52void SAKE_CALL sakeSetGame(SAKE sake, const gsi_char *gameName, int gameId, const gsi_char *secretKey);
53void SAKE_CALL sakeSetProfile(SAKE sake, int profileId, const char *loginTicket);
54
55
58// Fields
59typedef enum
60{
61 SAKEFieldType_BYTE,
62 SAKEFieldType_SHORT,
63 SAKEFieldType_INT,
64 SAKEFieldType_FLOAT,
65 SAKEFieldType_ASCII_STRING,
66 SAKEFieldType_UNICODE_STRING,
67 SAKEFieldType_BOOLEAN,
68 SAKEFieldType_DATE_AND_TIME,
69 SAKEFieldType_BINARY_DATA,
70 SAKEFieldType_INT64,
71 SAKEFieldType_NUM_FIELD_TYPES
72} SAKEFieldType;
73
74typedef struct
75{
76 gsi_u8 *mValue;
77 int mLength;
79
80typedef union
81{
82 gsi_u8 mByte;
83 gsi_i16 mShort;
84 gsi_i32 mInt;
85 float mFloat;
86 char *mAsciiString;
87 gsi_u16 *mUnicodeString;
88 gsi_bool mBoolean;
89 time_t mDateAndTime;
90 SAKEBinaryData mBinaryData;
91 gsi_i64 mInt64;
92} SAKEValue;
93
94typedef struct
95{
96 char *mName;
97 SAKEFieldType mType;
98 SAKEValue mValue;
99} SAKEField;
100
101
104// Requests
105typedef struct SAKERequestInternal *SAKERequest;
106
107typedef enum
108{
109 SAKEStartRequestResult_SUCCESS,
110 SAKEStartRequestResult_NOT_AUTHENTICATED,
111 SAKEStartRequestResult_OUT_OF_MEMORY,
112 SAKEStartRequestResult_BAD_INPUT,
113 SAKEStartRequestResult_BAD_TABLEID,
114 SAKEStartRequestResult_BAD_FIELDS,
115 SAKEStartRequestResult_BAD_NUM_FIELDS,
116 SAKEStartRequestResult_BAD_FIELD_NAME,
117 SAKEStartRequestResult_BAD_FIELD_TYPE,
118 SAKEStartRequestResult_BAD_FIELD_VALUE,
119 SAKEStartRequestResult_BAD_OFFSET,
120 SAKEStartRequestResult_BAD_MAX,
121 SAKEStartRequestResult_BAD_RECORDIDS,
122 SAKEStartRequestResult_BAD_NUM_RECORDIDS,
123 SAKEStartRequestResult_UNKNOWN_ERROR
124} SAKEStartRequestResult;
125
126typedef enum
127{
128 SAKERequestResult_SUCCESS,
129 SAKERequestResult_SECRET_KEY_INVALID,
130 SAKERequestResult_SERVICE_DISABLED,
131 SAKERequestResult_CONNECTION_TIMEOUT,
132 SAKERequestResult_CONNECTION_ERROR,
133 SAKERequestResult_MALFORMED_RESPONSE,
134 SAKERequestResult_OUT_OF_MEMORY,
135 SAKERequestResult_DATABASE_UNAVAILABLE,
136 SAKERequestResult_LOGIN_TICKET_INVALID,
137 SAKERequestResult_LOGIN_TICKET_EXPIRED,
138 SAKERequestResult_TABLE_NOT_FOUND,
139 SAKERequestResult_RECORD_NOT_FOUND,
140 SAKERequestResult_FIELD_NOT_FOUND,
141 SAKERequestResult_FIELD_TYPE_INVALID,
142 SAKERequestResult_NO_PERMISSION,
143 SAKERequestResult_RECORD_LIMIT_REACHED,
144 SAKERequestResult_ALREADY_RATED,
145 SAKERequestResult_NOT_RATEABLE,
146 SAKERequestResult_NOT_OWNED,
147 SAKERequestResult_FILTER_INVALID,
148 SAKERequestResult_SORT_INVALID,
149 SAKERequestResult_TARGET_FILTER_INVALID,
150 SAKERequestResult_UNKNOWN_ERROR
151} SAKERequestResult;
152
153typedef void (*SAKERequestCallback)(SAKE sake, SAKERequest request, SAKERequestResult result, void *inputData, void *outputData, void *userData);
154
156// get start request result
157SAKEStartRequestResult SAKE_CALL sakeGetStartRequestResult(SAKE sake);
158
160// create record
161typedef struct
162{
163 char *mTableId;
164 SAKEField *mFields;
165 int mNumFields;
167typedef struct
168{
169 int mRecordId;
171SAKERequest SAKE_CALL sakeCreateRecord(SAKE sake, SAKECreateRecordInput *input, SAKERequestCallback callback, void *userData);
172
174// update record
175typedef struct
176{
177 char *mTableId;
178 int mRecordId;
179 SAKEField *mFields;
180 int mNumFields;
182SAKERequest SAKE_CALL sakeUpdateRecord(SAKE sake, SAKEUpdateRecordInput *input, SAKERequestCallback callback, void *userData);
183
185// delete record
186typedef struct
187{
188 char *mTableId;
189 int mRecordId;
191SAKERequest SAKE_CALL sakeDeleteRecord(SAKE sake, SAKEDeleteRecordInput *input, SAKERequestCallback callback, void *userData);
192
194// search for records
195typedef struct
196{
197 char *mTableId;
198 char **mFieldNames;
199 int mNumFields;
200 gsi_char *mFilter;
201 char *mSort;
202 int mOffset;
203 int mMaxRecords;
204 gsi_char *mTargetRecordFilter;
205 int mSurroundingRecordsCount;
206 int *mOwnerIds;
207 int mNumOwnerIds;
208 gsi_bool mCacheFlag;
210typedef struct
211{
212 int mNumRecords;
213 SAKEField **mRecords;
215SAKERequest SAKE_CALL sakeSearchForRecords(SAKE sake, SAKESearchForRecordsInput *input, SAKERequestCallback callback, void *userData);
216
218// get my records
219typedef struct
220{
221 char *mTableId;
222 char **mFieldNames;
223 int mNumFields;
225typedef struct
226{
227 int mNumRecords;
228 SAKEField **mRecords;
230SAKERequest SAKE_CALL sakeGetMyRecords(SAKE sake, SAKEGetMyRecordsInput *input, SAKERequestCallback callback, void *userData);
231
233// get specific records
234typedef struct
235{
236 char *mTableId;
237 int *mRecordIds;
238 int mNumRecordIds;
239 char **mFieldNames;
240 int mNumFields;
242typedef struct
243{
244 int mNumRecords;
245 SAKEField **mRecords;
247SAKERequest SAKE_CALL sakeGetSpecificRecords(SAKE sake, SAKEGetSpecificRecordsInput *input, SAKERequestCallback callback, void *userData);
248
250// get random record
251typedef struct
252{
253 char *mTableId;
254 char **mFieldNames;
255 int mNumFields;
256 gsi_char *mFilter;
258typedef struct
259{
260 SAKEField *mRecord;
262SAKERequest SAKE_CALL sakeGetRandomRecord(SAKE sake, SAKEGetRandomRecordInput *input, SAKERequestCallback callback, void *userData);
263
265// rate record
266typedef struct
267{
268 char *mTableId;
269 int mRecordId;
270 gsi_u8 mRating;
272typedef struct
273{
274 int mNumRatings;
275 float mAverageRating;
277SAKERequest SAKE_CALL sakeRateRecord(SAKE sake, SAKERateRecordInput *input, SAKERequestCallback callback, void *userData);
278
280// get record limit
281typedef struct
282{
283 char *mTableId;
285typedef struct
286{
287 int mLimitPerOwner;
288 int mNumOwned;
290SAKERequest SAKE_CALL sakeGetRecordLimit(SAKE sake, SAKEGetRecordLimitInput *input, SAKERequestCallback callback, void *userData);
291
293// get record count
294typedef struct
295{
296 char *mTableId;
297 gsi_char *mFilter;
298 gsi_bool mCacheFlag;
300typedef struct
301{
302 int mCount;
304SAKERequest SAKE_CALL sakeGetRecordCount(SAKE sake, SAKEGetRecordCountInput *input, SAKERequestCallback callback, void *userData);
305
306
309// read request utility
310SAKEField * SAKE_CALL sakeGetFieldByName(const char *name, SAKEField *fields, int numFields);
311
312
315// Files
316
317#define SAKE_FILE_RESULT_HEADER "Sake-File-Result:"
318#define SAKE_FILE_ID_HEADER "Sake-File-Id:"
319
320// Sake-File-Result from the HTTP response header
321typedef enum
322{
323 SAKEFileResult_SUCCESS = 0,
324 SAKEFileResult_BAD_HTTP_METHOD = 1,
325 SAKEFileResult_BAD_FILE_COUNT = 2,
326 SAKEFileResult_MISSING_PARAMETER = 3,
327 SAKEFileResult_FILE_NOT_FOUND = 4,
328 SAKEFileResult_FILE_TOO_LARGE = 5,
329 SAKEFileResult_SERVER_ERROR = 6,
330 SAKEFileResult_UNKNOWN_ERROR
331} SAKEFileResult;
332
333gsi_bool SAKE_CALL sakeSetFileDownloadURL(SAKE sake, gsi_char url[SAKE_MAX_URL_LENGTH]);
334gsi_bool SAKE_CALL sakeSetFileUploadURL(SAKE sake, gsi_char url[SAKE_MAX_URL_LENGTH]);
335
336gsi_bool SAKE_CALL sakeGetFileDownloadURL(SAKE sake, int fileId, gsi_char url[SAKE_MAX_URL_LENGTH]);
337gsi_bool SAKE_CALL sakeGetFileUploadURL(SAKE sake, gsi_char url[SAKE_MAX_URL_LENGTH]);
338
339gsi_bool SAKE_CALL sakeGetFileResultFromHeaders(const char *headers, SAKEFileResult *result);
340gsi_bool SAKE_CALL sakeGetFileIdFromHeaders(const char *headers, int *fileId);
341
342
345#if defined(__cplusplus)
346} // extern "C"
347#endif
348
349
352#endif // __SAKE_H__
Definition sake.h:75
Definition sake.h:162
Definition sake.h:168
Definition sake.h:187
Definition sake.h:95
Definition sake.h:220
Definition sake.h:226
Definition sake.h:252
Definition sake.h:259
Definition sake.h:295
Definition sake.h:301
Definition sake.h:282
Definition sake.h:286
Definition sake.h:235
Definition sake.h:243
Definition sakeMain.h:28
Definition sake.h:267
Definition sake.h:273
Definition sakeRequest.h:48
Definition sake.h:196
Definition sake.h:211
Definition sake.h:176
Definition sake.h:81