1 /*
2  * Copyright (c) 2022-2024 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 COMMUNICATIONNETSTACK_CONSTANT_H
17 #define COMMUNICATIONNETSTACK_CONSTANT_H
18 
19 #include <map>
20 #include <string>
21 
22 namespace OHOS::NetStack::Websocket {
23 enum {
24     FUNCTION_PARAM_ZERO = 0,
25     FUNCTION_PARAM_ONE = 1,
26     FUNCTION_PARAM_TWO = 2,
27     FUNCTION_PARAM_THREE = 3,
28 };
29 
30 enum WebsocketErrorCode {
31     WEBSOCKET_CONNECT_FAILED = -1,
32     WEBSOCKET_ERROR_CODE_BASE = 2302000,
33     WEBSOCKET_ERROR_CODE_URL_ERROR = WEBSOCKET_ERROR_CODE_BASE + 1,
34     WEBSOCKET_ERROR_CODE_FILE_NOT_EXIST = WEBSOCKET_ERROR_CODE_BASE + 2,
35     WEBSOCKET_ERROR_CODE_CONNECT_AlREADY_EXIST = WEBSOCKET_ERROR_CODE_BASE + 3,
36     WEBSOCKET_NOT_ALLOWED_HOST = 2302998,
37     WEBSOCKET_UNKNOWN_OTHER_ERROR = 2302999
38 };
39 
40 static const std::map<int32_t, std::string> WEBSOCKET_ERR_MAP = {
41     {WEBSOCKET_CONNECT_FAILED, "Websocket connect failed"},
42     {WEBSOCKET_ERROR_CODE_URL_ERROR, "Websocket url error"},
43     {WEBSOCKET_ERROR_CODE_FILE_NOT_EXIST, "Websocket file not exist"},
44     {WEBSOCKET_ERROR_CODE_CONNECT_AlREADY_EXIST, "Websocket connection exist"},
45     {WEBSOCKET_NOT_ALLOWED_HOST, "It is not allowed to access this domain"},
46     {WEBSOCKET_UNKNOWN_OTHER_ERROR, "Websocket Unknown Other Error"}};
47 
48 enum {
49     CLOSE_REASON_NORMAL_CLOSE [[maybe_unused]] = 1000,
50     CLOSE_REASON_SERVER_CLOSED [[maybe_unused]] = 1001,
51     CLOSE_REASON_PROTOCOL_ERROR [[maybe_unused]] = 1002,
52     CLOSE_REASON_UNSUPPORT_DATA_TYPE [[maybe_unused]] = 1003,
53     CLOSE_REASON_RESERVED1 [[maybe_unused]],
54     CLOSE_REASON_RESERVED2 [[maybe_unused]],
55     CLOSE_REASON_RESERVED3 [[maybe_unused]],
56     CLOSE_REASON_RESERVED4 [[maybe_unused]],
57     CLOSE_REASON_RESERVED5 [[maybe_unused]],
58     CLOSE_REASON_RESERVED6 [[maybe_unused]],
59     CLOSE_REASON_RESERVED7 [[maybe_unused]],
60     CLOSE_REASON_RESERVED8 [[maybe_unused]],
61     CLOSE_REASON_RESERVED9 [[maybe_unused]],
62     CLOSE_REASON_RESERVED10 [[maybe_unused]],
63     CLOSE_REASON_RESERVED11 [[maybe_unused]],
64     CLOSE_REASON_RESERVED12 [[maybe_unused]],
65 };
66 
67 enum class WebsocketProxyType {
68     NOT_USE,
69     USE_SYSTEM,
70     USE_SPECIFIED,
71 };
72 
73 class ContextKey final {
74 public:
75     static const char *HEADER;
76 
77     static const char *CAPATH;
78     static const char *CLIENT_CERT;
79     static const char *CERT_PATH;
80     static const char *KEY_PATH;
81     static const char *KEY_PASSWD;
82 
83     static const char *PROXY;
84     static const char *PROTCOL;
85     static const char *USE_SYSTEM_PROXY;
86     static const char *NOT_USE_PROXY;
87 
88     static const char *WEBSOCKET_PROXY_HOST;
89     static const char *WEBSOCKET_PROXY_PORT;
90     static const char *WEBSOCKET_PROXY_EXCLUSION_LIST;
91     static const char *WEBSOCKET_PROXY_EXCLUSIONS_SEPARATOR;
92 
93     static const char *CODE;
94     static const char *REASON;
95 };
96 
97 class EventName final {
98 public:
99     static const char *EVENT_OPEN;
100     static const char *EVENT_MESSAGE;
101     static const char *EVENT_CLOSE;
102     static const char *EVENT_ERROR;
103     static const char *EVENT_DATA_END;
104     static const char *EVENT_HEADER_RECEIVE;
105 };
106 } // namespace OHOS::NetStack::Websocket
107 #endif /* COMMUNICATIONNETSTACK_CONSTANT_H */
108