/* This file is part of FediBlock-backend. * Copyright © 2020 tastytea * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef FEDIBLOCK_BACKEND_FILES_HPP #define FEDIBLOCK_BACKEND_FILES_HPP #include "fs-compat.hpp" #include "types.hpp" #include namespace FediBlock::files { using std::string; // Create and return the temporary directory. [[nodiscard]] fs::path get_tmpdir(); // Remove the temporary directory. Throws runtime_error on error. void remove_tmpdir(); /*! * @brief Return XDG directory and create it if necessary. Do not use * directly. * * @param identifier The string between `XDG_` and `_HOME`. * * @return The XDG directory if it is defined or an empty path. * * @since 0.1.0 */ [[nodiscard]] fs::path get_xdg_dir(const string &identifier); // Return the data directory and create it if necessary. [[nodiscard]] fs::path get_datadir(); // Return the cache directory and create it if necessary. [[nodiscard]] fs::path get_cachedir(); // Read and return access token. [[nodiscard]] string get_access_token(); /*! * @brief Read JSON files in data repo and return vector of entries. * * @param cache Use cache if true, temporary dir if false. * * @since 0.1.0 */ [[nodiscard]] vector read_json_files(bool cache = false); // Return path of lockfile. [[nodiscard]] fs::path get_lockfile(); // Attempt to create lockfile. Return true if created, false if already locked. [[nodiscard]] bool create_lockfile(); // Remove lockfile if it exists. void remove_lockfile(); } // namespace FediBlock::files #endif // FEDIBLOCK_BACKEND_FILES_HPP