1 /* 2 * Copyright (C) 2022 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 #ifndef FRAMEWORKS_SERVICES_MEDIA_LIBRARY_EXTENTION_UTILS_H_ 16 #define FRAMEWORKS_SERVICES_MEDIA_LIBRARY_EXTENTION_UTILS_H_ 17 18 #include "abs_shared_result_set.h" 19 #include "datashare_result_set.h" 20 #include "file_access_extension_info.h" 21 #include "file_filter.h" 22 #include "image_source.h" 23 #include "uri.h" 24 25 namespace OHOS { 26 namespace Media { 27 // root dirs 28 const std::vector<std::string> directoryEnumValues { 29 "Camera/", 30 "Videos/", 31 "Pictures/", 32 "Audios/", 33 "Documents/", 34 "Download/" 35 }; 36 // parent id is root path 37 const int32_t ROOT_PARENT_ID = 0; 38 // device virtual root node 39 static const std::string MEDIALIBRARY_ROOT = "/root"; 40 static const std::string MEDIALIBRARY_LOCAL_DEVICE_NAME = "LOCAL"; 41 // mimetype prefix 42 const std::string DEFAULT_AUDIO_MIME_TYPE_PREFIX = "audio/"; 43 const std::string DEFAULT_VIDEO_MIME_TYPE_PREFIX = "video/"; 44 const std::string DEFAULT_IMAGE_MIME_TYPE_PREFIX = "image/"; 45 const std::string DEFAULT_FILE_MIME_TYPE_PREFIX = "file/"; 46 enum MediaFileUriType { 47 URI_ROOT, 48 URI_MEDIA_ROOT, 49 URI_FILE_ROOT, 50 URI_DIR, 51 URI_ALBUM, 52 URI_FILE, 53 }; 54 55 class MediaFileExtentionUtils { 56 public: 57 static bool CheckUriValid(const std::string &uri); 58 static bool CheckDistributedUri(const std::string &uri); 59 static int32_t CheckUriSupport(const std::string &uri); 60 static std::shared_ptr<NativeRdb::ResultSet> GetResultSetFromDb(std::string field, const std::string &uri, 61 const std::vector<std::string> &columns); 62 static bool IsFileExistInDb(const std::string &path); 63 static int32_t ResolveUri(const FileAccessFwk::FileInfo &fileInfo, MediaFileUriType &uriType); 64 static bool CheckValidDirName(const std::string &displayName); 65 static int32_t CheckMkdirValid(MediaFileUriType uriType, const std::string &parentUriStr, 66 const std::string &displayName); 67 static bool GetAlbumRelativePathFromDB(const std::string &selectUri, std::string &relativePath); 68 69 static int32_t OpenFile(const Uri &uri, const int flags, int &fd); 70 static int32_t CreateFile(const Uri &parentUri, const std::string &displayName, Uri &newFileUri); 71 static int32_t Mkdir(const Uri &parentUri, const std::string &displayName, Uri &newFileUri); 72 static int32_t Delete(const Uri &sourceFileUri); 73 static int32_t Move(const Uri &sourceFileUri, const Uri &targetParentUri, Uri &newFileUri); 74 static int32_t Copy(const Uri &sourceUri, const Uri &destUri, std::vector<FileAccessFwk::Result> ©Result, 75 bool force = false); 76 static int32_t Rename(const Uri &sourceFileUri, const std::string &displayName, Uri &newFileUri); 77 static int32_t ListFile(const FileAccessFwk::FileInfo &parentInfo, const int64_t offset, const int64_t maxCount, 78 const FileAccessFwk::FileFilter &filter, std::vector<FileAccessFwk::FileInfo> &fileList); 79 static int32_t ScanFile(const FileAccessFwk::FileInfo &parentInfo, const int64_t offset, const int64_t maxCount, 80 const FileAccessFwk::FileFilter &filter, std::vector<FileAccessFwk::FileInfo> &fileList); 81 static int32_t Query(const Uri &uri, std::vector<std::string> &columns, std::vector<std::string> &results); 82 static int32_t GetRoots(std::vector<FileAccessFwk::RootInfo> &rootList); 83 static int Access(const Uri &uri, bool &isExist); 84 static int GetThumbnail(const Uri &uri, const Size &size, std::unique_ptr<PixelMap> &pixelMap); 85 static int GetFileInfoFromUri(const Uri &selectFile, FileAccessFwk::FileInfo &fileInfo); 86 static int GetFileInfoFromRelativePath(const std::string &relativePath, FileAccessFwk::FileInfo &fileInfo); 87 }; 88 } // Media 89 } // OHOS 90 91 #endif // FRAMEWORKS_SERVICES_MEDIA_LIBRARY_EXTENTION_UTILS_H_