11e934351Sopenharmony_ci/*
21e934351Sopenharmony_ci * Copyright (c) 2021-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 COMMUNICATIONNETSTACK_COMMON_UTILS_H
171e934351Sopenharmony_ci#define COMMUNICATIONNETSTACK_COMMON_UTILS_H
181e934351Sopenharmony_ci
191e934351Sopenharmony_ci#include <iosfwd>
201e934351Sopenharmony_ci#include <list>
211e934351Sopenharmony_ci#include <vector>
221e934351Sopenharmony_ci#include <string>
231e934351Sopenharmony_ci#include <optional>
241e934351Sopenharmony_ci
251e934351Sopenharmony_cinamespace OHOS::NetStack::CommonUtils {
261e934351Sopenharmony_cistatic const std::string DOMAIN_TYPE_HTTP_REQUEST = "httpRequest";
271e934351Sopenharmony_cistatic const std::string DOMAIN_TYPE_WEBSOCKET_REQUEST = "webSocket";
281e934351Sopenharmony_cienum SdkVersion {
291e934351Sopenharmony_ci    FIVE = 5,
301e934351Sopenharmony_ci    SIX,
311e934351Sopenharmony_ci    SEVEN,
321e934351Sopenharmony_ci    EIGHT,
331e934351Sopenharmony_ci    NINE,
341e934351Sopenharmony_ci    TEN,
351e934351Sopenharmony_ci    ELEVEN,
361e934351Sopenharmony_ci    TWELVE
371e934351Sopenharmony_ci};
381e934351Sopenharmony_ci
391e934351Sopenharmony_cistd::vector<std::string> Split(const std::string &str, const std::string &sep);
401e934351Sopenharmony_ci
411e934351Sopenharmony_cistd::vector<std::string> Split(const std::string &str, const std::string &sep, size_t size);
421e934351Sopenharmony_ci
431e934351Sopenharmony_cistd::string Strip(const std::string &str, char ch = ' ');
441e934351Sopenharmony_ci
451e934351Sopenharmony_cistd::string ToLower(const std::string &s);
461e934351Sopenharmony_ci
471e934351Sopenharmony_cistd::string ToString(const std::list<std::string> &lists, char tab = ',');
481e934351Sopenharmony_ci
491e934351Sopenharmony_cibool HasInternetPermission();
501e934351Sopenharmony_ci
511e934351Sopenharmony_cibool IsAtomicService(std::string &bundleName);
521e934351Sopenharmony_ci
531e934351Sopenharmony_cibool IsAllowedHostname(const std::string &bundleName, const std::string &domainType, const std::string &url);
541e934351Sopenharmony_ci
551e934351Sopenharmony_cibool EndsWith(const std::string &str, const std::string &suffix);
561e934351Sopenharmony_ci
571e934351Sopenharmony_cistd::string Trim(std::string str);
581e934351Sopenharmony_ci
591e934351Sopenharmony_cibool IsMatch(const std::string &str, const std::string &patternStr);
601e934351Sopenharmony_ci
611e934351Sopenharmony_cistd::string InsertCharBefore(const std::string &input, const char from, const char preChar, const char nextChar);
621e934351Sopenharmony_ci
631e934351Sopenharmony_cistd::string ReplaceCharacters(const std::string &input);
641e934351Sopenharmony_ci
651e934351Sopenharmony_cibool IsRegexValid(const std::string &regex);
661e934351Sopenharmony_ci
671e934351Sopenharmony_cistd::string GetProtocolFromURL(const std::string &url);
681e934351Sopenharmony_ci
691e934351Sopenharmony_cistd::string GetPortFromURL(const std::string &url);
701e934351Sopenharmony_ci
711e934351Sopenharmony_cistd::string GetHostnameFromURL(const std::string& url);
721e934351Sopenharmony_ci
731e934351Sopenharmony_cistd::string GetHostnameWithProtocolAndPortFromURL(const std::string& url);
741e934351Sopenharmony_ci
751e934351Sopenharmony_cibool IsExcluded(const std::string &str, const std::string &exclusions, const std::string &split);
761e934351Sopenharmony_ci
771e934351Sopenharmony_cibool IsHostNameExcluded(const std::string &url, const std::string &exclusions, const std::string &split);
781e934351Sopenharmony_ci
791e934351Sopenharmony_cibool IsValidIP(const std::string& ip, int af);
801e934351Sopenharmony_ci
811e934351Sopenharmony_cibool IsValidIPV4(const std::string &ip);
821e934351Sopenharmony_ci
831e934351Sopenharmony_cibool IsValidIPV6(const std::string &ip);
841e934351Sopenharmony_ci
851e934351Sopenharmony_cistd::string MaskIpv4(std::string &maskedResult);
861e934351Sopenharmony_ci
871e934351Sopenharmony_cistd::string MaskIpv6(std::string &maskedResult);
881e934351Sopenharmony_ci
891e934351Sopenharmony_cistd::string AnonymizeIp(std::string &input);
901e934351Sopenharmony_ci
911e934351Sopenharmony_cistd::optional<std::string> GetBundleName();
921e934351Sopenharmony_ci
931e934351Sopenharmony_cibool GetFileDataFromFilePath(const std::string& filePath, std::string& fileData);
941e934351Sopenharmony_ci} // namespace OHOS::NetStack::CommonUtils
951e934351Sopenharmony_ci#endif /* COMMUNICATIONNETSTACK_COMMON_UTILS_H */
96