* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef OHOS_NWEB_NWEB_C_API_H
#define OHOS_NWEB_NWEB_C_API_H
#include <stddef.h>
#include <stdint.h>
#include <memory>
#include <string>
#ifdef __cplusplus
extern "C" {
#endif
#define NWEB_EXPORT __attribute__((visibility("default")))
enum NWebDownloadItemState {
IN_PROGRESS = 0,
COMPLETE,
CANCELED,
INTERRUPTED,
PENDING,
PAUSED,
MAX_DOWNLOAD_STATE,
};
typedef struct NWebDownloadDelegateCallback WebDownloadDelegateCallback;
typedef struct NWebBeforeDownloadCallbackWrapper WebBeforeDownloadCallbackWrapper;
typedef struct NWebDownloadItemCallbackWrapper WebDownloadItemCallbackWrapper;
typedef struct NWebDownloadItem NWebDownloadItem;
typedef void (*OnDownloadBeforeStart)(NWebDownloadItem *downloadItem, WebBeforeDownloadCallbackWrapper *wrapper);
typedef void (*OnDownloadDidUpdate)(NWebDownloadItem *downloadItem, WebDownloadItemCallbackWrapper *wrapper);
NWEB_EXPORT void WebDownloadManager_PutDownloadCallback(WebDownloadDelegateCallback *callback);
NWEB_EXPORT void WebDownloader_StartDownload(int32_t nwebId, const char* url);
NWEB_EXPORT void WebDownloader_SetDownloadBeforeStart(WebDownloadDelegateCallback *callback, OnDownloadBeforeStart fun);
NWEB_EXPORT void WebDownloader_SetDownloadDidUpdate(WebDownloadDelegateCallback *callback, OnDownloadDidUpdate fun);
NWEB_EXPORT void WebDownloader_ResumeDownloadStatic(const NWebDownloadItem *downloadItem);
NWEB_EXPORT void WebDownloader_CreateDownloadDelegateCallback(WebDownloadDelegateCallback **callback);
NWEB_EXPORT void WebDownload_Continue(const WebBeforeDownloadCallbackWrapper *wrapper, const char *downloadPath);
NWEB_EXPORT void WebDownload_CancelBeforeDownload(const WebBeforeDownloadCallbackWrapper *wrapper);
NWEB_EXPORT void WebDownload_PauseBeforeDownload(const WebBeforeDownloadCallbackWrapper *wrapper);
NWEB_EXPORT void WebDownload_ResumeBeforeDownload(const WebBeforeDownloadCallbackWrapper *wrapper);
NWEB_EXPORT void WebDownload_Cancel(const WebDownloadItemCallbackWrapper *wrapper);
NWEB_EXPORT void WebDownload_Pause(const WebDownloadItemCallbackWrapper *wrapper);
NWEB_EXPORT void WebDownload_Resume(const WebDownloadItemCallbackWrapper *wrapper);
NWEB_EXPORT NWebDownloadItemState WebDownload_GetItemState(int32_t nwebId, long downloadItemId);
NWEB_EXPORT NWebDownloadItemState WebDownload_GetItemStateByGuid(const std::string& guid);
NWEB_EXPORT NWebDownloadItemState WebDownload_GetItemStateByGuidV2(const char* guid);
NWEB_EXPORT void WebDownloadItem_CreateWebDownloadItem(NWebDownloadItem **downloadItem);
NWEB_EXPORT void WebDownloadItem_Destroy(NWebDownloadItem *downloadItem);
NWEB_EXPORT void WebDownloadItem_SetFullPath(NWebDownloadItem *downloadItem, const char *fullPath);
NWEB_EXPORT void WebDownloadItem_SetReceivedBytes(NWebDownloadItem *downloadItem, int64_t receivedBytes);
NWEB_EXPORT void WebDownloadItem_SetTotalBytes(NWebDownloadItem *downloadItem, int64_t totalBytes);
NWEB_EXPORT void WebDownloadItem_SetETag(NWebDownloadItem *downloadItem, const char *etag);
NWEB_EXPORT void WebDownloadItem_SetLastModified(NWebDownloadItem *downloadItem, const char *lastModified);
NWEB_EXPORT void WebDownloadItem_SetMimeType(NWebDownloadItem *downloadItem, const char *mimeType);
NWEB_EXPORT void WebDownloadItem_SetUrl(NWebDownloadItem *downloadItem, const char *url);
NWEB_EXPORT void WebDownloadItem_SetOriginalUrl(NWebDownloadItem *downloadItem, const char *originalUrl);
NWEB_EXPORT void WebDownloadItem_SetReferrerUrl(NWebDownloadItem *downloadItem, const char *referrerUrl);
NWEB_EXPORT void WebDownloadItem_SetUrlChain(NWebDownloadItem *downloadItem, char** urlChain, int64_t size);
NWEB_EXPORT void WebDownloadItem_SetReceivedSlices(NWebDownloadItem *downloadItem, const char *receivedSlices);
NWEB_EXPORT void WebDownloadItem_SetGuid(NWebDownloadItem *downloadItem, const char *guid);
NWEB_EXPORT char *WebDownloadItem_Guid(const NWebDownloadItem *downloadItem);
NWEB_EXPORT long WebDownloadItem_GetDownloadItemId(const NWebDownloadItem *downloadItem);
NWEB_EXPORT NWebDownloadItemState WebDownloadItem_GetState(const NWebDownloadItem *downloadItem);
NWEB_EXPORT int WebDownloadItem_CurrentSpeed(const NWebDownloadItem *downloadItem);
NWEB_EXPORT int WebDownloadItem_PercentComplete(const NWebDownloadItem *downloadItem);
NWEB_EXPORT int64_t WebDownloadItem_TotalBytes(const NWebDownloadItem *downloadItem);
NWEB_EXPORT int64_t WebDownloadItem_ReceivedBytes(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char *WebDownloadItem_FullPath(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char *WebDownloadItem_Url(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char *WebDownloadItem_OriginalUrl(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char *WebDownloadItem_ReferrerUrl(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char** WebDownloadItem_UrlChain(const NWebDownloadItem *downloadItem);
NWEB_EXPORT int64_t WebDownloadItem_UrlChainSize(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char *WebDownloadItem_SuggestedFileName(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char *WebDownloadItem_ContentDisposition(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char *WebDownloadItem_ETag(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char *WebDownloadItem_MimeType(const NWebDownloadItem *downloadItem);
NWEB_EXPORT bool WebDownloadItem_IsPaused(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char *WebDownloadItem_Method(const NWebDownloadItem *downloadItem);
NWEB_EXPORT int WebDownloadItem_LastErrorCode(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char *WebDownloadItem_ReceivedSlices(const NWebDownloadItem *downloadItem);
NWEB_EXPORT char *WebDownloadItem_LastModified(const NWebDownloadItem *downloadItem);
NWEB_EXPORT int WebDownloadItem_NWebId(const NWebDownloadItem *downloadItem);
NWEB_EXPORT void DestroyBeforeDownloadCallbackWrapper(WebBeforeDownloadCallbackWrapper *wrapper);
NWEB_EXPORT void DestroyDownloadItemCallbackWrapper(WebDownloadItemCallbackWrapper *wrapper);
#ifdef __cplusplus
}
#endif
#endif