1 /*
2  *  Copyright (C) 2005-2021 Team Kodi (https://kodi.tv)
3  *
4  *  SPDX-License-Identifier: GPL-2.0-or-later
5  *  See LICENSE.md for more information.
6  */
7 
8 #pragma once
9 
10 #include <kodi/Filesystem.h>
11 #include <string>
12 
13 namespace iptvsimple
14 {
15   namespace utilities
16   {
17     static const int LZMA_OUT_BUF_MAX = 409600;
18 
19     class FileUtils
20     {
21     public:
22       static std::string PathCombine(const std::string& path, const std::string& fileName);
23       static std::string GetUserDataAddonFilePath(const std::string& fileName);
24       static int GetFileContents(const std::string& url, std::string& content);
25       static bool GzipInflate(const std::string& compressedBytes, std::string& uncompressedBytes);
26       static bool XzDecompress(const std::string& compressedBytes, std::string& uncompressedBytes);
27       static int GetCachedFileContents(const std::string& cachedName, const std::string& filePath,
28                                        std::string& content, const bool useCache = false);
29       static bool FileExists(const std::string& file);
30       static bool DeleteFile(const std::string& file);
31       static bool CopyFile(const std::string& sourceFile, const std::string& targetFile);
32       static bool CopyDirectory(const std::string& sourceDir, const std::string& targetDir, bool recursiveCopy);
33       static std::string GetSystemAddonPath();
34       static std::string GetResourceDataPath();
35 
36     private:
37       static std::string ReadFileContents(kodi::vfs::CFile& fileHandle);
38     };
39   } // namespace utilities
40 } // namespace iptvsimple
41