1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef OHOS_NWEB_NWEB_C_API_H
17 #define OHOS_NWEB_NWEB_C_API_H
18 
19 #include <stddef.h>
20 #include <stdint.h>
21 #include <memory>
22 #include <string>
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif // __cplusplus
27 
28 #define NWEB_EXPORT __attribute__((visibility("default")))
29 
30 enum NWebDownloadItemState {
31     IN_PROGRESS = 0,
32     COMPLETE,
33     CANCELED,
34     INTERRUPTED,
35     PENDING,
36     PAUSED,
37     MAX_DOWNLOAD_STATE,
38 };
39 
40 
41 typedef struct NWebDownloadDelegateCallback WebDownloadDelegateCallback;
42 typedef struct NWebBeforeDownloadCallbackWrapper WebBeforeDownloadCallbackWrapper;
43 typedef struct NWebDownloadItemCallbackWrapper WebDownloadItemCallbackWrapper;
44 typedef struct NWebDownloadItem NWebDownloadItem;
45 
46 typedef void (*OnDownloadBeforeStart)(NWebDownloadItem *downloadItem, WebBeforeDownloadCallbackWrapper *wrapper);
47 typedef void (*OnDownloadDidUpdate)(NWebDownloadItem *downloadItem, WebDownloadItemCallbackWrapper *wrapper);
48 
49 // / WebDownloader functions.
50 NWEB_EXPORT void WebDownloadManager_PutDownloadCallback(WebDownloadDelegateCallback *callback);
51 
52 NWEB_EXPORT void WebDownloader_StartDownload(int32_t nwebId, const char* url);
53 
54 NWEB_EXPORT void WebDownloader_SetDownloadBeforeStart(WebDownloadDelegateCallback *callback, OnDownloadBeforeStart fun);
55 
56 NWEB_EXPORT void WebDownloader_SetDownloadDidUpdate(WebDownloadDelegateCallback *callback, OnDownloadDidUpdate fun);
57 
58 NWEB_EXPORT void WebDownloader_ResumeDownloadStatic(const NWebDownloadItem *downloadItem);
59 
60 NWEB_EXPORT void WebDownloader_CreateDownloadDelegateCallback(WebDownloadDelegateCallback **callback);
61 
62 NWEB_EXPORT void WebDownload_Continue(const WebBeforeDownloadCallbackWrapper *wrapper, const char *downloadPath);
63 
64 NWEB_EXPORT void WebDownload_CancelBeforeDownload(const WebBeforeDownloadCallbackWrapper *wrapper);
65 
66 NWEB_EXPORT void WebDownload_PauseBeforeDownload(const WebBeforeDownloadCallbackWrapper *wrapper);
67 
68 NWEB_EXPORT void WebDownload_ResumeBeforeDownload(const WebBeforeDownloadCallbackWrapper *wrapper);
69 
70 NWEB_EXPORT void WebDownload_Cancel(const WebDownloadItemCallbackWrapper *wrapper);
71 
72 NWEB_EXPORT void WebDownload_Pause(const WebDownloadItemCallbackWrapper *wrapper);
73 
74 NWEB_EXPORT void WebDownload_Resume(const WebDownloadItemCallbackWrapper *wrapper);
75 
76 NWEB_EXPORT NWebDownloadItemState WebDownload_GetItemState(int32_t nwebId, long downloadItemId);
77 
78 NWEB_EXPORT NWebDownloadItemState WebDownload_GetItemStateByGuid(const std::string& guid);
79 
80 NWEB_EXPORT void WebDownloadItem_CreateWebDownloadItem(NWebDownloadItem **downloadItem);
81 
82 NWEB_EXPORT void WebDownloadItem_Destroy(NWebDownloadItem *downloadItem);
83 
84 NWEB_EXPORT void WebDownloadItem_SetFullPath(NWebDownloadItem *downloadItem, const char *fullPath);
85 
86 NWEB_EXPORT void WebDownloadItem_SetReceivedBytes(NWebDownloadItem *downloadItem, int64_t receivedBytes);
87 
88 NWEB_EXPORT void WebDownloadItem_SetTotalBytes(NWebDownloadItem *downloadItem, int64_t totalBytes);
89 
90 NWEB_EXPORT void WebDownloadItem_SetETag(NWebDownloadItem *downloadItem, const char *etag);
91 
92 NWEB_EXPORT void WebDownloadItem_SetLastModified(NWebDownloadItem *downloadItem, const char *lastModified);
93 
94 NWEB_EXPORT void WebDownloadItem_SetMimeType(NWebDownloadItem *downloadItem, const char *mimeType);
95 
96 NWEB_EXPORT void WebDownloadItem_SetUrl(NWebDownloadItem *downloadItem, const char *url);
97 
98 NWEB_EXPORT void WebDownloadItem_SetReceivedSlices(NWebDownloadItem *downloadItem, const char *receivedSlices);
99 
100 NWEB_EXPORT void WebDownloadItem_SetGuid(NWebDownloadItem *downloadItem, const char *guid);
101 
102 NWEB_EXPORT char *WebDownloadItem_Guid(const NWebDownloadItem *downloadItem);
103 
104 NWEB_EXPORT long WebDownloadItem_GetDownloadItemId(const NWebDownloadItem *downloadItem);
105 
106 NWEB_EXPORT NWebDownloadItemState WebDownloadItem_GetState(const NWebDownloadItem *downloadItem);
107 
108 NWEB_EXPORT int WebDownloadItem_CurrentSpeed(const NWebDownloadItem *downloadItem);
109 
110 NWEB_EXPORT int WebDownloadItem_PercentComplete(const NWebDownloadItem *downloadItem);
111 
112 NWEB_EXPORT int64_t WebDownloadItem_TotalBytes(const NWebDownloadItem *downloadItem);
113 
114 NWEB_EXPORT int64_t WebDownloadItem_ReceivedBytes(const NWebDownloadItem *downloadItem);
115 
116 NWEB_EXPORT char *WebDownloadItem_FullPath(const NWebDownloadItem *downloadItem);
117 
118 NWEB_EXPORT char *WebDownloadItem_Url(const NWebDownloadItem *downloadItem);
119 
120 NWEB_EXPORT char *WebDownloadItem_OriginalUrl(const NWebDownloadItem *downloadItem);
121 
122 NWEB_EXPORT char *WebDownloadItem_SuggestedFileName(const NWebDownloadItem *downloadItem);
123 
124 NWEB_EXPORT char *WebDownloadItem_ContentDisposition(const NWebDownloadItem *downloadItem);
125 
126 NWEB_EXPORT char *WebDownloadItem_ETag(const NWebDownloadItem *downloadItem);
127 
128 NWEB_EXPORT char *WebDownloadItem_MimeType(const NWebDownloadItem *downloadItem);
129 
130 NWEB_EXPORT bool WebDownloadItem_IsPaused(const NWebDownloadItem *downloadItem);
131 
132 NWEB_EXPORT char *WebDownloadItem_Method(const NWebDownloadItem *downloadItem);
133 
134 NWEB_EXPORT int WebDownloadItem_LastErrorCode(const NWebDownloadItem *downloadItem);
135 
136 NWEB_EXPORT char *WebDownloadItem_ReceivedSlices(const NWebDownloadItem *downloadItem);
137 
138 NWEB_EXPORT char *WebDownloadItem_LastModified(const NWebDownloadItem *downloadItem);
139 
140 NWEB_EXPORT int WebDownloadItem_NWebId(const NWebDownloadItem *downloadItem);
141 
142 NWEB_EXPORT void DestroyBeforeDownloadCallbackWrapper(WebBeforeDownloadCallbackWrapper *wrapper);
143 
144 NWEB_EXPORT void DestroyDownloadItemCallbackWrapper(WebDownloadItemCallbackWrapper *wrapper);
145 
146 #ifdef __cplusplus
147 }
148 #endif // __cplusplus
149 
150 #endif // OHOS_NWEB_NWEB_C_API_H
151