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 HTTP_CONSTANT_H 171e934351Sopenharmony_ci#define HTTP_CONSTANT_H 181e934351Sopenharmony_ci 191e934351Sopenharmony_ci#include <cstddef> 201e934351Sopenharmony_ci#include <cstdint> 211e934351Sopenharmony_ci 221e934351Sopenharmony_ci#include "curl/curl.h" 231e934351Sopenharmony_ci 241e934351Sopenharmony_cinamespace OHOS::NetStack::Http { 251e934351Sopenharmony_ciconstexpr const uint32_t MAX_LIMIT = 100 * 1024 * 1024; 261e934351Sopenharmony_ciconstexpr const uint32_t DEFAULT_MAX_LIMIT = 5 * 1024 * 1024; 271e934351Sopenharmony_ciconstexpr const uint32_t DEFAULT_READ_TIMEOUT = 60000; 281e934351Sopenharmony_ciconstexpr const uint32_t DEFAULT_CONNECT_TIMEOUT = 60000; 291e934351Sopenharmony_ciconstexpr const size_t MAX_JSON_PARSE_SIZE = 65536; 301e934351Sopenharmony_ciconstexpr const uint32_t MIN_PRIORITY = 1; 311e934351Sopenharmony_ciconstexpr const uint32_t MAX_PRIORITY = 1000; 321e934351Sopenharmony_ciconstexpr const int64_t MIN_RESUM_NUMBER = 1; 331e934351Sopenharmony_ciconstexpr const int64_t MAX_RESUM_NUMBER = 4294967296; 341e934351Sopenharmony_ciconstexpr const size_t MAP_TUPLE_SIZE = 2; 351e934351Sopenharmony_ci 361e934351Sopenharmony_ciconstexpr const char *HTTP_METHOD_GET = "GET"; 371e934351Sopenharmony_ciconstexpr const char *HTTP_METHOD_HEAD = "HEAD"; 381e934351Sopenharmony_ciconstexpr const char *HTTP_METHOD_OPTIONS = "OPTIONS"; 391e934351Sopenharmony_ciconstexpr const char *HTTP_METHOD_TRACE = "TRACE"; 401e934351Sopenharmony_ciconstexpr const char *HTTP_METHOD_DELETE = "DELETE"; 411e934351Sopenharmony_ciconstexpr const char *HTTP_METHOD_POST = "POST"; 421e934351Sopenharmony_ciconstexpr const char *HTTP_METHOD_PUT = "PUT"; 431e934351Sopenharmony_ciconstexpr const char *HTTP_METHOD_CONNECT = "CONNECT"; 441e934351Sopenharmony_ciconstexpr const char *HTTP_LINE_SEPARATOR = "\r\n"; 451e934351Sopenharmony_ciconstexpr const char *HTTP_HEADER_SEPARATOR = ":"; 461e934351Sopenharmony_ciconstexpr const char *RESPONSE_KEY_RESULT = "result"; 471e934351Sopenharmony_ciconstexpr const char *RESPONSE_KEY_RESPONSE_CODE = "responseCode"; 481e934351Sopenharmony_ciconstexpr const char *RESPONSE_KEY_HEADER = "header"; 491e934351Sopenharmony_ciconstexpr const char *RESPONSE_KEY_COOKIES = "cookies"; 501e934351Sopenharmony_ciconstexpr const char *RESPONSE_KEY_RESULT_TYPE = "resultType"; 511e934351Sopenharmony_ciconstexpr const char *REQUEST_TIME = "requestTime"; 521e934351Sopenharmony_ciconstexpr const char *RESPONSE_TIME = "responseTime"; 531e934351Sopenharmony_ciconstexpr const char *HTTP_HEADER_BLANK_SEPARATOR = ";"; 541e934351Sopenharmony_ciconstexpr const char *HTTP_RESPONSE_HEADER_SEPARATOR = "\r\n\r\n"; 551e934351Sopenharmony_ciconstexpr const char *HTTP_URL_PARAM_START = "?"; 561e934351Sopenharmony_ciconstexpr const char *HTTP_URL_PARAM_SEPARATOR = "&"; 571e934351Sopenharmony_ciconstexpr const char *HTTP_URL_NAME_VALUE_SEPARATOR = "="; 581e934351Sopenharmony_ciconstexpr const char *HTTP_PROXY_EXCLUSIONS_SEPARATOR = ","; 591e934351Sopenharmony_ci// cache constant 601e934351Sopenharmony_ciconstexpr const int DECIMAL = 10; 611e934351Sopenharmony_ciconstexpr const char *SPLIT = ", "; 621e934351Sopenharmony_ciconstexpr const char EQUAL = '='; 631e934351Sopenharmony_ci 641e934351Sopenharmony_ciconstexpr const char *HTTP_DEFAULT_USER_AGENT = "libcurl-agent/1.0"; 651e934351Sopenharmony_ciconstexpr const char *RESPONSE_KEY_SET_COOKIE = "set-cookie"; 661e934351Sopenharmony_ciconstexpr const char *NO_CACHE = "no-cache"; 671e934351Sopenharmony_ciconstexpr const char *NO_STORE = "no-store"; 681e934351Sopenharmony_ciconstexpr const char *NO_TRANSFORM = "no-transform"; 691e934351Sopenharmony_ciconstexpr const char *ONLY_IF_CACHED = "only-if-cached"; 701e934351Sopenharmony_ciconstexpr const char *MAX_AGE = "max-age"; 711e934351Sopenharmony_ciconstexpr const char *MAX_STALE = "max-stale"; 721e934351Sopenharmony_ciconstexpr const char *MIN_FRESH = "min-fresh"; 731e934351Sopenharmony_ciconstexpr const char *CACHE_CONTROL = "cache-control"; 741e934351Sopenharmony_ciconstexpr const char *IF_MODIFIED_SINCE = "if-modified-since"; 751e934351Sopenharmony_ciconstexpr const char *IF_NONE_MATCH = "if-none-match"; 761e934351Sopenharmony_ciconstexpr const char *MUST_REVALIDATE = "must-revalidate"; 771e934351Sopenharmony_ciconstexpr const char *PUBLIC = "public"; 781e934351Sopenharmony_ciconstexpr const char *PRIVATE = "private"; 791e934351Sopenharmony_ciconstexpr const char *PROXY_REVALIDATE = "proxy-revalidate"; 801e934351Sopenharmony_ciconstexpr const char *S_MAXAGE = "s-maxage"; 811e934351Sopenharmony_ciconstexpr const char *EXPIRES = "expires"; 821e934351Sopenharmony_ciconstexpr const char *LAST_MODIFIED = "last-modified"; 831e934351Sopenharmony_ciconstexpr const char *ETAG = "etag"; 841e934351Sopenharmony_ciconstexpr const char *AGE = "age"; 851e934351Sopenharmony_ciconstexpr const char *DATE = "date"; 861e934351Sopenharmony_ciconstexpr const int INVALID_TIME = -1; 871e934351Sopenharmony_ciconstexpr const char *HTTP_PREPARE_CA_PATH = "/etc/security/certificates"; 881e934351Sopenharmony_ci 891e934351Sopenharmony_ciconstexpr const char *HTTP_CONTENT_TYPE = "content-type"; 901e934351Sopenharmony_ciconstexpr const char *HTTP_CONTENT_TYPE_URL_ENCODE = "application/x-www-form-urlencoded"; 911e934351Sopenharmony_ciconstexpr const char *HTTP_CONTENT_TYPE_JSON = "application/json"; 921e934351Sopenharmony_ciconstexpr const char *HTTP_CONTENT_TYPE_OCTET_STREAM = "application/octet-stream"; 931e934351Sopenharmony_ciconstexpr const char *HTTP_CONTENT_TYPE_IMAGE = "image"; 941e934351Sopenharmony_ciconstexpr const char *HTTP_CONTENT_TYPE_MULTIPART = "multipart/form-data"; 951e934351Sopenharmony_ci 961e934351Sopenharmony_ci// events 971e934351Sopenharmony_ciconstexpr const char *ON_HEADER_RECEIVE = "headerReceive"; 981e934351Sopenharmony_ciconstexpr const char *ON_DATA_RECEIVE = "dataReceive"; 991e934351Sopenharmony_ciconstexpr const char *ON_DATA_END = "dataEnd"; 1001e934351Sopenharmony_ciconstexpr const char *ON_DATA_RECEIVE_PROGRESS = "dataReceiveProgress"; 1011e934351Sopenharmony_ciconstexpr const char *ON_HEADERS_RECEIVE = "headersReceive"; 1021e934351Sopenharmony_ci 1031e934351Sopenharmony_ci 1041e934351Sopenharmony_ciconstexpr const char *RESPONSE_PERFORMANCE_TIMING = "performanceTiming"; 1051e934351Sopenharmony_ciconstexpr const char *RESPONSE_DNS_TIMING = "dnsTiming"; 1061e934351Sopenharmony_ciconstexpr const char *RESPONSE_TCP_TIMING = "tcpTiming"; 1071e934351Sopenharmony_ciconstexpr const char *RESPONSE_TLS_TIMING = "tlsTiming"; 1081e934351Sopenharmony_ciconstexpr const char *RESPONSE_FIRST_SEND_TIMING = "firstSendTiming"; 1091e934351Sopenharmony_ciconstexpr const char *RESPONSE_FIRST_RECEIVE_TIMING = "firstReceiveTiming"; 1101e934351Sopenharmony_ciconstexpr const char *RESPONSE_TOTAL_FINISH_TIMING = "totalFinishTiming"; 1111e934351Sopenharmony_ciconstexpr const char *RESPONSE_REDIRECT_TIMING = "redirectTiming"; 1121e934351Sopenharmony_ciconstexpr const char *RESPONSE_HEADER_TIMING = "responseHeaderTiming"; 1131e934351Sopenharmony_ciconstexpr const char *RESPONSE_BODY_TIMING = "responseBodyTiming"; 1141e934351Sopenharmony_ciconstexpr const char *RESPONSE_TOTAL_TIMING = "totalTiming"; 1151e934351Sopenharmony_ci 1161e934351Sopenharmony_cienum class ResponseCode { 1171e934351Sopenharmony_ci OK = 200, 1181e934351Sopenharmony_ci CREATED, 1191e934351Sopenharmony_ci ACCEPTED, 1201e934351Sopenharmony_ci NOT_AUTHORITATIVE, 1211e934351Sopenharmony_ci NO_CONTENT, 1221e934351Sopenharmony_ci RESET, 1231e934351Sopenharmony_ci PARTIAL, 1241e934351Sopenharmony_ci MULT_CHOICE = 300, 1251e934351Sopenharmony_ci MOVED_PERM, 1261e934351Sopenharmony_ci MOVED_TEMP, 1271e934351Sopenharmony_ci SEE_OTHER, 1281e934351Sopenharmony_ci NOT_MODIFIED, 1291e934351Sopenharmony_ci USE_PROXY, 1301e934351Sopenharmony_ci BAD_REQUEST = 400, 1311e934351Sopenharmony_ci UNAUTHORIZED, 1321e934351Sopenharmony_ci PAYMENT_REQUIRED, 1331e934351Sopenharmony_ci FORBIDDEN, 1341e934351Sopenharmony_ci NOT_FOUND, 1351e934351Sopenharmony_ci BAD_METHOD, 1361e934351Sopenharmony_ci NOT_ACCEPTABLE, 1371e934351Sopenharmony_ci PROXY_AUTH, 1381e934351Sopenharmony_ci CLIENT_TIMEOUT, 1391e934351Sopenharmony_ci CONFLICT, 1401e934351Sopenharmony_ci GONE, 1411e934351Sopenharmony_ci LENGTH_REQUIRED, 1421e934351Sopenharmony_ci PRECON_FAILED, 1431e934351Sopenharmony_ci ENTITY_TOO_LARGE, 1441e934351Sopenharmony_ci REQ_TOO_LONG, 1451e934351Sopenharmony_ci UNSUPPORTED_TYPE, 1461e934351Sopenharmony_ci INTERNAL_ERROR = 500, 1471e934351Sopenharmony_ci NOT_IMPLEMENTED, 1481e934351Sopenharmony_ci BAD_GATEWAY, 1491e934351Sopenharmony_ci UNAVAILABLE, 1501e934351Sopenharmony_ci GATEWAY_TIMEOUT, 1511e934351Sopenharmony_ci VERSION, 1521e934351Sopenharmony_ci}; 1531e934351Sopenharmony_ci 1541e934351Sopenharmony_cienum class HttpErrorCode { 1551e934351Sopenharmony_ci HTTP_ERROR_CODE_BASE = 2300000, 1561e934351Sopenharmony_ci HTTP_UNSUPPORTED_PROTOCOL = HTTP_ERROR_CODE_BASE + CURLE_UNSUPPORTED_PROTOCOL, 1571e934351Sopenharmony_ci HTTP_URL_MALFORMAT = HTTP_ERROR_CODE_BASE + CURLE_URL_MALFORMAT, 1581e934351Sopenharmony_ci HTTP_COULDNT_RESOLVE_PROXY = HTTP_ERROR_CODE_BASE + CURLE_COULDNT_RESOLVE_PROXY, 1591e934351Sopenharmony_ci HTTP_COULDNT_RESOLVE_HOST = HTTP_ERROR_CODE_BASE + CURLE_COULDNT_RESOLVE_HOST, 1601e934351Sopenharmony_ci HTTP_COULDNT_CONNECT = HTTP_ERROR_CODE_BASE + CURLE_COULDNT_CONNECT, 1611e934351Sopenharmony_ci HTTP_WEIRD_SERVER_REPLY = HTTP_ERROR_CODE_BASE + CURLE_WEIRD_SERVER_REPLY, 1621e934351Sopenharmony_ci HTTP_REMOTE_ACCESS_DENIED = HTTP_ERROR_CODE_BASE + CURLE_REMOTE_ACCESS_DENIED, 1631e934351Sopenharmony_ci HTTP_HTTP2_ERROR = HTTP_ERROR_CODE_BASE + CURLE_HTTP2, 1641e934351Sopenharmony_ci HTTP_PARTIAL_FILE = HTTP_ERROR_CODE_BASE + CURLE_PARTIAL_FILE, 1651e934351Sopenharmony_ci HTTP_WRITE_ERROR = HTTP_ERROR_CODE_BASE + CURLE_WRITE_ERROR, 1661e934351Sopenharmony_ci HTTP_UPLOAD_FAILED = HTTP_ERROR_CODE_BASE + CURLE_UPLOAD_FAILED, 1671e934351Sopenharmony_ci HTTP_READ_ERROR = HTTP_ERROR_CODE_BASE + CURLE_READ_ERROR, 1681e934351Sopenharmony_ci HTTP_OUT_OF_MEMORY = HTTP_ERROR_CODE_BASE + CURLE_OUT_OF_MEMORY, 1691e934351Sopenharmony_ci HTTP_OPERATION_TIMEDOUT = HTTP_ERROR_CODE_BASE + CURLE_OPERATION_TIMEDOUT, 1701e934351Sopenharmony_ci HTTP_TOO_MANY_REDIRECTS = HTTP_ERROR_CODE_BASE + CURLE_TOO_MANY_REDIRECTS, 1711e934351Sopenharmony_ci HTTP_GOT_NOTHING = HTTP_ERROR_CODE_BASE + CURLE_GOT_NOTHING, 1721e934351Sopenharmony_ci HTTP_SEND_ERROR = HTTP_ERROR_CODE_BASE + CURLE_SEND_ERROR, 1731e934351Sopenharmony_ci HTTP_RECV_ERROR = HTTP_ERROR_CODE_BASE + CURLE_RECV_ERROR, 1741e934351Sopenharmony_ci HTTP_SSL_CERTPROBLEM = HTTP_ERROR_CODE_BASE + CURLE_SSL_CERTPROBLEM, 1751e934351Sopenharmony_ci HTTP_SSL_CIPHER = HTTP_ERROR_CODE_BASE + CURLE_SSL_CIPHER, 1761e934351Sopenharmony_ci HTTP_PEER_FAILED_VERIFICATION = HTTP_ERROR_CODE_BASE + CURLE_PEER_FAILED_VERIFICATION, 1771e934351Sopenharmony_ci HTTP_BAD_CONTENT_ENCODING = HTTP_ERROR_CODE_BASE + CURLE_BAD_CONTENT_ENCODING, 1781e934351Sopenharmony_ci HTTP_FILESIZE_EXCEEDED = HTTP_ERROR_CODE_BASE + CURLE_FILESIZE_EXCEEDED, 1791e934351Sopenharmony_ci HTTP_REMOTE_DISK_FULL = HTTP_ERROR_CODE_BASE + CURLE_REMOTE_DISK_FULL, 1801e934351Sopenharmony_ci HTTP_REMOTE_FILE_EXISTS = HTTP_ERROR_CODE_BASE + CURLE_REMOTE_FILE_EXISTS, 1811e934351Sopenharmony_ci HTTP_SSL_CACERT_BADFILE = HTTP_ERROR_CODE_BASE + CURLE_SSL_CACERT_BADFILE, 1821e934351Sopenharmony_ci HTTP_REMOTE_FILE_NOT_FOUND = HTTP_ERROR_CODE_BASE + CURLE_REMOTE_FILE_NOT_FOUND, 1831e934351Sopenharmony_ci HTTP_AUTH_ERROR = HTTP_ERROR_CODE_BASE + CURLE_AUTH_ERROR, 1841e934351Sopenharmony_ci HTTP_UNKNOWN_OTHER_ERROR = 2300999 1851e934351Sopenharmony_ci}; 1861e934351Sopenharmony_ci 1871e934351Sopenharmony_cienum class HttpDataType { 1881e934351Sopenharmony_ci /** 1891e934351Sopenharmony_ci * The returned type is string. 1901e934351Sopenharmony_ci */ 1911e934351Sopenharmony_ci STRING, 1921e934351Sopenharmony_ci /** 1931e934351Sopenharmony_ci * The returned type is Object. 1941e934351Sopenharmony_ci */ 1951e934351Sopenharmony_ci OBJECT = 1, 1961e934351Sopenharmony_ci /** 1971e934351Sopenharmony_ci * The returned type is ArrayBuffer. 1981e934351Sopenharmony_ci */ 1991e934351Sopenharmony_ci ARRAY_BUFFER = 2, 2001e934351Sopenharmony_ci /** 2011e934351Sopenharmony_ci * The returned type is not set. 2021e934351Sopenharmony_ci */ 2031e934351Sopenharmony_ci NO_DATA_TYPE = 3, 2041e934351Sopenharmony_ci}; 2051e934351Sopenharmony_ci} // namespace OHOS::NetStack::Http 2061e934351Sopenharmony_ci 2071e934351Sopenharmony_ci#endif /* HTTP_CONSTANT_H */ 208