Remove getDataDirectory

This commit is contained in:
sgourdas 2024-08-11 23:46:34 +03:00
parent 566b40a2f8
commit 9fd8e81de2
6 changed files with 11 additions and 81 deletions

View File

@ -172,7 +172,12 @@ class Downloader
typedef std::vector<std::pair<std::string, std::string>> Options; typedef std::vector<std::pair<std::string, std::string>> Options;
public: // functions public: // functions
Downloader(); /*
* Create a new Downloader object.
*
* @param sessionFileDir: The directory where aria2 will store its session file.
*/
explicit Downloader(std::string sessionFileDir);
virtual ~Downloader(); virtual ~Downloader();
void close(); void close();

View File

@ -45,32 +45,6 @@ typedef std::vector<std::string> FeedCategories;
*/ */
std::string getCurrentDirectory(); std::string getCurrentDirectory();
/**
* Return the data directory
*
* The data directory is the default directory where downloaded files
* should be saved (it can be overriden via the options parameter of
* `kiwix::Downloader::startDownload()`).
*
* Its path can vary and is determined as follows:
*
* * `$KIWIX_DATA_DIR` if `$KIWIX_DATA_DIR` environment variable set, *otherwise...*
* * On Windows:
*
* * `$APPDATA/kiwix` if environment variable `$APPDATA` set, *otherwise...*
* * `$USERPROFILE/kiwix` if environment variable `$USERPROFILE` set, *otherwise...*
*
* * On other Operating Systems:
*
* * `$XDG_DATA_HOME/kiwix` if environment variable `$XDG_DATA_HOME` set, *otherwise...*
* * `$HOME/.local/share/kiwx` if environment variable `$HOME` set, *otherwise...*
*
* * Current working directory.
*
* @return the path of the data directory (UTF-8 encoded)
*/
std::string getDataDirectory();
/** Return the path of the executable /** Return the path of the executable
* *
* Some application may be packaged in auto extractible archive (Appimage) and the * Some application may be packaged in auto extractible archive (Appimage) and the

View File

@ -55,17 +55,15 @@ void pauseAnyActiveDownloads(const std::string& ariaSessionFilePath)
} // unnamed namespace } // unnamed namespace
Aria2::Aria2(): Aria2::Aria2(std::string sessionFileDir):
mp_aria(nullptr), mp_aria(nullptr),
m_port(42042), m_port(42042),
m_secret(getNewRpcSecret()) m_secret(getNewRpcSecret())
{ {
m_downloadDir = getDataDirectory();
makeDirectory(m_downloadDir);
std::vector<const char*> callCmd; std::vector<const char*> callCmd;
std::string rpc_port = "--rpc-listen-port=" + to_string(m_port); std::string rpc_port = "--rpc-listen-port=" + to_string(m_port);
std::string session_file = appendToDirectory(getDataDirectory(), "kiwix.session"); std::string session_file = appendToDirectory(sessionFileDir, "kiwix.session");
pauseAnyActiveDownloads(session_file); pauseAnyActiveDownloads(session_file);
std::string session = "--save-session=" + session_file; std::string session = "--save-session=" + session_file;
std::string inputFile = "--input-file=" + session_file; std::string inputFile = "--input-file=" + session_file;

View File

@ -22,11 +22,10 @@ class Aria2
std::unique_ptr<Subprocess> mp_aria; std::unique_ptr<Subprocess> mp_aria;
int m_port; int m_port;
std::string m_secret; std::string m_secret;
std::string m_downloadDir;
std::string doRequest(const MethodCall& methodCall); std::string doRequest(const MethodCall& methodCall);
public: public:
Aria2(); explicit Aria2(std::string sessionFileDir);
virtual ~Aria2() = default; virtual ~Aria2() = default;
void close(); void close();

View File

@ -125,8 +125,8 @@ void Download::cancelDownload()
} }
/* Constructor */ /* Constructor */
Downloader::Downloader() : Downloader::Downloader(std::string sessionFileDir) :
mp_aria(new Aria2()) mp_aria(new Aria2(sessionFileDir))
{ {
try { try {
for (auto gid : mp_aria->tellWaiting()) { for (auto gid : mp_aria->tellWaiting()) {

View File

@ -438,52 +438,6 @@ std::string kiwix::getCurrentDirectory()
return ret; return ret;
} }
std::string kiwix::getDataDirectory()
{
// Try to get the dataDir from the `KIWIX_DATA_DIR` env var
#ifdef _WIN32
wchar_t* cDataDir = ::_wgetenv(L"KIWIX_DATA_DIR");
if (cDataDir != nullptr) {
return WideToUtf8(cDataDir);
}
#else
char* cDataDir = ::getenv("KIWIX_DATA_DIR");
if (cDataDir != nullptr) {
return cDataDir;
}
#endif
// Compute the dataDir from the user directory.
std::string dataDir;
#ifdef _WIN32
cDataDir = ::_wgetenv(L"APPDATA");
if (cDataDir == nullptr)
cDataDir = ::_wgetenv(L"USERPROFILE");
if (cDataDir != nullptr)
dataDir = WideToUtf8(cDataDir);
#else
cDataDir = ::getenv("XDG_DATA_HOME");
if (cDataDir != nullptr) {
dataDir = cDataDir;
} else {
cDataDir = ::getenv("HOME");
if (cDataDir != nullptr) {
dataDir = cDataDir;
dataDir = appendToDirectory(dataDir, ".local");
dataDir = appendToDirectory(dataDir, "share");
}
}
#endif
if (!dataDir.empty()) {
dataDir = appendToDirectory(dataDir, "kiwix");
makeDirectory(dataDir);
return dataDir;
}
// Let's use the currentDirectory
return getCurrentDirectory();
}
static std::map<std::string, std::string> extMimeTypes = { static std::map<std::string, std::string> extMimeTypes = {
{ "html", "text/html"}, { "html", "text/html"},
{ "htm", "text/html"}, { "htm", "text/html"},