11e934351Sopenharmony_ci/* 21e934351Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 31e934351Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41e934351Sopenharmony_ci * you may not use this file except in compliance with the License. 51e934351Sopenharmony_ci * You may obtain a copy of the License at 61e934351Sopenharmony_ci * 71e934351Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81e934351Sopenharmony_ci * 91e934351Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101e934351Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111e934351Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121e934351Sopenharmony_ci * See the License for the specific language governing permissions and 131e934351Sopenharmony_ci * limitations under the License. 141e934351Sopenharmony_ci */ 151e934351Sopenharmony_ci 161e934351Sopenharmony_ci#ifndef NET_HTTP_FFI_STRUCTS_H 171e934351Sopenharmony_ci#define NET_HTTP_FFI_STRUCTS_H 181e934351Sopenharmony_ci 191e934351Sopenharmony_ci#include <cstdint> 201e934351Sopenharmony_ci 211e934351Sopenharmony_ci#include "cj_ffi/cj_common_ffi.h" 221e934351Sopenharmony_ci 231e934351Sopenharmony_ci#ifdef __cplusplus 241e934351Sopenharmony_ci#define EXTERN_C_START extern "C" { 251e934351Sopenharmony_ci#define EXTERN_C_END } 261e934351Sopenharmony_ci#else 271e934351Sopenharmony_ci#define EXTERN_C_START 281e934351Sopenharmony_ci#define EXTERN_C_END 291e934351Sopenharmony_ci#endif 301e934351Sopenharmony_ci 311e934351Sopenharmony_ciEXTERN_C_START 321e934351Sopenharmony_ci struct CHttpProxy { 331e934351Sopenharmony_ci char* host; 341e934351Sopenharmony_ci uint16_t port; 351e934351Sopenharmony_ci char** exclusionList; 361e934351Sopenharmony_ci int64_t exclusionListSize; 371e934351Sopenharmony_ci }; 381e934351Sopenharmony_ci 391e934351Sopenharmony_ci struct CMultiFormData { 401e934351Sopenharmony_ci char* name; 411e934351Sopenharmony_ci char* contentType; 421e934351Sopenharmony_ci char* remoteFileName; 431e934351Sopenharmony_ci CArrUI8 data; 441e934351Sopenharmony_ci char* filePath; 451e934351Sopenharmony_ci }; 461e934351Sopenharmony_ci 471e934351Sopenharmony_ci struct CArrMultiFormData { 481e934351Sopenharmony_ci CMultiFormData* data; 491e934351Sopenharmony_ci int64_t size; 501e934351Sopenharmony_ci }; 511e934351Sopenharmony_ci 521e934351Sopenharmony_ci struct CClientCert { 531e934351Sopenharmony_ci char* certPath; 541e934351Sopenharmony_ci char* keyPath; 551e934351Sopenharmony_ci char* certType; 561e934351Sopenharmony_ci char* keyPassword; 571e934351Sopenharmony_ci }; 581e934351Sopenharmony_ci 591e934351Sopenharmony_ci struct CPerformanceTiming { 601e934351Sopenharmony_ci double dnsTiming; 611e934351Sopenharmony_ci double tcpTiming; 621e934351Sopenharmony_ci double tlsTiming; 631e934351Sopenharmony_ci double firstSendTiming; 641e934351Sopenharmony_ci double firstReceiveTiming; 651e934351Sopenharmony_ci double totalFinishTiming; 661e934351Sopenharmony_ci double redirectTiming; 671e934351Sopenharmony_ci double responseHeaderTiming; 681e934351Sopenharmony_ci double responseBodyTiming; 691e934351Sopenharmony_ci double totalTiming; 701e934351Sopenharmony_ci }; 711e934351Sopenharmony_ci 721e934351Sopenharmony_ci struct CHttpRequestOptions { 731e934351Sopenharmony_ci char* method; 741e934351Sopenharmony_ci CArrUI8 extraData; 751e934351Sopenharmony_ci int32_t expectDataType; 761e934351Sopenharmony_ci bool usingCache; 771e934351Sopenharmony_ci uint32_t priority; 781e934351Sopenharmony_ci CArrString header; 791e934351Sopenharmony_ci uint32_t readTimeout; 801e934351Sopenharmony_ci uint32_t connectTimeout; 811e934351Sopenharmony_ci int32_t usingProtocol; 821e934351Sopenharmony_ci bool usingDefaultProxy; 831e934351Sopenharmony_ci CHttpProxy* usingProxy; 841e934351Sopenharmony_ci char* caPath; 851e934351Sopenharmony_ci int64_t resumeFrom; 861e934351Sopenharmony_ci int64_t resumeTo; 871e934351Sopenharmony_ci CClientCert* clientCert; 881e934351Sopenharmony_ci char* dnsOverHttps; 891e934351Sopenharmony_ci CArrString dnsServer; 901e934351Sopenharmony_ci uint32_t maxLimit; 911e934351Sopenharmony_ci CArrMultiFormData multiFormDataList; 921e934351Sopenharmony_ci }; 931e934351Sopenharmony_ci 941e934351Sopenharmony_ci struct CHttpResponse { 951e934351Sopenharmony_ci int32_t errCode; 961e934351Sopenharmony_ci char* errMsg; 971e934351Sopenharmony_ci CArrUI8 result; 981e934351Sopenharmony_ci int32_t resultType; 991e934351Sopenharmony_ci uint32_t responseCode; 1001e934351Sopenharmony_ci CArrString header; 1011e934351Sopenharmony_ci char* cookies; 1021e934351Sopenharmony_ci CArrString setCookie; 1031e934351Sopenharmony_ci CPerformanceTiming performanceTiming; 1041e934351Sopenharmony_ci }; 1051e934351Sopenharmony_ci 1061e934351Sopenharmony_ci struct CDataReceiveProgressInfo { 1071e934351Sopenharmony_ci uint32_t receiveSize; 1081e934351Sopenharmony_ci uint32_t totalSize; 1091e934351Sopenharmony_ci }; 1101e934351Sopenharmony_ci 1111e934351Sopenharmony_ci struct CDataSendProgressInfo { 1121e934351Sopenharmony_ci uint32_t sendSize; 1131e934351Sopenharmony_ci uint32_t totalSize; 1141e934351Sopenharmony_ci }; 1151e934351Sopenharmony_ciEXTERN_C_END 1161e934351Sopenharmony_ci 1171e934351Sopenharmony_ci#endif