-
Notifications
You must be signed in to change notification settings - Fork 7
/
paprika.h
163 lines (121 loc) · 4.63 KB
/
paprika.h
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#ifndef PAPRIKA_TRANSFER_H_
#define PAPRIKA_TRANSFER_H_
#include <stdbool.h>
#include <wchar.h>
#ifdef __cplusplus
extern "C" {
#endif
#if defined(_WIN32)
#define PAPRIKA_EXTERN __declspec(dllexport)
#else
#define PAPRIKA_EXTERN
#endif /* _WIN32 */
PAPRIKA_EXTERN void paprika_set_apikey(const char* key);
// auth function
typedef void* PaprikaAuthToken;
PAPRIKA_EXTERN PaprikaAuthToken paprika_auth_create();
PAPRIKA_EXTERN PaprikaAuthToken paprika_auth_create_with_deviceid(
const char* id, const char* password);
PAPRIKA_EXTERN void paprika_auth_close(PaprikaAuthToken auth);
PAPRIKA_EXTERN const char* paprika_auth_get_device_id(PaprikaAuthToken auth);
PAPRIKA_EXTERN const char* paprika_auth_get_device_password(PaprikaAuthToken auth);
// option function
typedef enum {
PAPRIKA_OPTION_API_SERVER = 0,
PAPRIKA_OPTION_RESERVED1,
PAPRIKA_OPTION_RESERVED2,
PAPRIKA_OPTION_PROFILE_NAME,
} PaprikaOptionKey;
typedef void* PaprikaOption;
PAPRIKA_EXTERN PaprikaOption paprika_option_create();
PAPRIKA_EXTERN void paprika_option_close(PaprikaOption option);
PAPRIKA_EXTERN void paprika_option_set_value(PaprikaOption option,
PaprikaOptionKey key, const void* value);
// task function
typedef enum {
PAPRIKA_STATE_UNKNOWN = 0,
// all task
PAPRIKA_STATE_FINISHED,
PAPRIKA_STATE_ERROR,
PAPRIKA_STATE_PREPARING,
// trasnfer task
PAPRIKA_STATE_TRANSFERRING,
} PaprikaState;
typedef enum {
PAPRIKA_DETAILED_STATE_UNKNOWN = 0,
// all task
PAPRIKA_DETAILED_STATE_FINISHED_SUCCESS,
PAPRIKA_DETAILED_STATE_FINISHED_CANCEL,
PAPRIKA_DETAILED_STATE_FINISHED_ERROR,
PAPRIKA_DETAILED_STATE_ERROR_WRONG_API_KEY,
PAPRIKA_DETAILED_STATE_ERROR_RESERVED5,
PAPRIKA_DETAILED_STATE_ERROR_RESERVED6,
PAPRIKA_DETAILED_STATE_ERROR_RESERVED7,
PAPRIKA_DETAILED_STATE_ERROR_RESERVED8,
PAPRIKA_DETAILED_STATE_PREPARING_UPDATED_DEVICE_ID,
PAPRIKA_DETAILED_STATE_RESERVED10,
// transfer task
/* PAPRIKA_TASK_UPLOAD, PAPRIKA_TASK_UPLOAD_REQ, PAPRIKA_TASK_UPLOAD_RES,
PAPRIKA_TASK_DOWNLOAD, PAPRIKA_TASK_DOWNLOAD_REQ, PAPRIKA_TASK_DOWNLOAD_RES */
PAPRIKA_DETAILED_STATE_RESERVED11,
PAPRIKA_DETAILED_STATE_PREPARING_UPDATED_KEY,
PAPRIKA_DETAILED_STATE_RESERVED13,
PAPRIKA_DETAILED_STATE_RESERVED14,
PAPRIKA_DETAILED_STATE_PREPARING_UPDATED_FILE_LIST,
PAPRIKA_DETAILED_STATE_RESERVED16,
PAPRIKA_DETAILED_STATE_RESERVED17,
PAPRIKA_DETAILED_STATE_RESERVED18,
PAPRIKA_DETAILED_STATE_RESERVED19,
PAPRIKA_DETAILED_STATE_RESERVED20,
PAPRIKA_DETAILED_STATE_RESERVED21,
PAPRIKA_DETAILED_STATE_RESERVED22,
PAPRIKA_DETAILED_STATE_RESERVED23,
PAPRIKA_DETAILED_STATE_RESERVED24,
PAPRIKA_DETAILED_STATE_RESERVED25,
// PAPRIKA_TASK_UPLOAD
PAPRIKA_DETAILED_STATE_ERROR_NO_REQUEST,
PAPRIKA_DETAILED_STATE_ERROR_NO_EXIST_FILE,
// PAPRIKA_TASK_DOWNLOAD
PAPRIKA_DETAILED_STATE_ERROR_FILE_NO_DOWNLOAD_PATH,
PAPRIKA_DETAILED_STATE_ERROR_FILE_NO_DISK_SPACE,
// PAPRIKA_TASK_DOWNLOAD, PAPRIKA_TASK_DELETE_KEY, PAPRIKA_TASK_QUERY_KEY
PAPRIKA_DETAILED_STATE_ERROR_NO_EXIST_KEY,
} PaprikaDetailedState;
typedef void* PaprikaTask;
typedef void (*paprika_listener_function)(
PaprikaState state,
PaprikaDetailedState detailedState,
const void* param,
void* userptr);
typedef struct {
const wchar_t* name;
const wchar_t* fullPath;
unsigned long long size;
unsigned long long sent;
} PaprikaTransferFileState;
typedef struct {
unsigned int number;
PaprikaTransferFileState* fileState;
} PaprikaAllTransferFileState;
typedef enum {
PAPRIKA_TRANSFER_DIRECT = 0,
} PaprikaTransferMode;
// send/recv function
PAPRIKA_EXTERN PaprikaTask paprika_create_upload(
const wchar_t* files[], unsigned int fileNumber, PaprikaTransferMode trasnferMode);
PAPRIKA_EXTERN PaprikaTask paprika_create_download(
const wchar_t* key, const wchar_t* destDirPath);
// general function for task
PAPRIKA_EXTERN void paprika_close(PaprikaTask task);
PAPRIKA_EXTERN void paprika_start(PaprikaTask task);
PAPRIKA_EXTERN void paprika_wait(PaprikaTask task);
PAPRIKA_EXTERN void paprika_cancel(PaprikaTask task);
PAPRIKA_EXTERN bool paprika_is_running(PaprikaTask task);
PAPRIKA_EXTERN void paprika_set_auth(PaprikaTask task, PaprikaAuthToken auth);
PAPRIKA_EXTERN void paprika_set_option(PaprikaTask task, PaprikaOption option);
PAPRIKA_EXTERN void paprika_set_listner(PaprikaTask task,
paprika_listener_function func, void* userptr);
#ifdef __cplusplus
}
#endif
#endif // PAPRIKA_TRANSFER_H_