140f5d65dSopenharmony_ci/*
240f5d65dSopenharmony_ci * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
340f5d65dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
440f5d65dSopenharmony_ci * you may not use this file except in compliance with the License.
540f5d65dSopenharmony_ci * You may obtain a copy of the License at
640f5d65dSopenharmony_ci *
740f5d65dSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
840f5d65dSopenharmony_ci *
940f5d65dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1040f5d65dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1140f5d65dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1240f5d65dSopenharmony_ci * See the License for the specific language governing permissions and
1340f5d65dSopenharmony_ci * limitations under the License.
1440f5d65dSopenharmony_ci */
1540f5d65dSopenharmony_ci
1640f5d65dSopenharmony_ci#ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_INNERKITS_NATIVE_COMMON_INCLUDE_SANDBOX_HELPER_H
1740f5d65dSopenharmony_ci#define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_INNERKITS_NATIVE_COMMON_INCLUDE_SANDBOX_HELPER_H
1840f5d65dSopenharmony_ci
1940f5d65dSopenharmony_ci#include <mutex>
2040f5d65dSopenharmony_ci#include <string>
2140f5d65dSopenharmony_ci#include <unordered_map>
2240f5d65dSopenharmony_ci
2340f5d65dSopenharmony_cinamespace OHOS {
2440f5d65dSopenharmony_cinamespace AppFileService {
2540f5d65dSopenharmony_ciclass SandboxHelper {
2640f5d65dSopenharmony_ciprivate:
2740f5d65dSopenharmony_ci    static std::mutex mapMutex_;
2840f5d65dSopenharmony_ci    static std::unordered_map<std::string, std::string> sandboxPathMap_;
2940f5d65dSopenharmony_ci    static std::unordered_map<std::string, std::string> backupSandboxPathMap_;
3040f5d65dSopenharmony_ci    static bool GetSandboxPathMap();
3140f5d65dSopenharmony_ci    static bool GetBackupSandboxPathMap();
3240f5d65dSopenharmony_cipublic:
3340f5d65dSopenharmony_ci    static std::string Encode(const std::string &uri);
3440f5d65dSopenharmony_ci    static std::string Decode(const std::string &uri);
3540f5d65dSopenharmony_ci    static bool CheckValidPath(const std::string &filePath);
3640f5d65dSopenharmony_ci    static int32_t GetPhysicalPath(const std::string &fileUri, const std::string &userId,
3740f5d65dSopenharmony_ci                                   std::string &physicalPath);
3840f5d65dSopenharmony_ci    static int32_t GetBackupPhysicalPath(const std::string &fileUri, const std::string &userId,
3940f5d65dSopenharmony_ci                                         std::string &physicalPath);
4040f5d65dSopenharmony_ci    static bool IsValidPath(const std::string &path);
4140f5d65dSopenharmony_ci};
4240f5d65dSopenharmony_ci} // namespace AppFileService
4340f5d65dSopenharmony_ci} // namespace OHOS
4440f5d65dSopenharmony_ci
4540f5d65dSopenharmony_ci#endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_INNERKITS_NATIVE_COMMON_INCLUDE_SANDBOX_HELPER_H