8 using std::string, std::vector, std::shared_ptr, std::ifstream, std::mutex, std::optional, std::exception;
13 namespace fs = std::filesystem;
21 const char *
what() const noexcept
override {
22 return errorMessage.c_str();
28 const
string errorMessage;
35 const char *
what() const noexcept
override {
36 return errorMessage.c_str();
42 const
string errorMessage;
61 vector<unsigned char> resolveAsBytes(
const CscResourceSpec &spec) noexcept(
false);
78 void resolveAndExportToFile(
const CscResourceSpec &spec,
const fs::path &outPath) noexcept(
false);
103 unsigned long long getLastModificationTime(
const CscResourceSpec &spec) noexcept(
false);
115 void publish(
const CscResourceSpec &spec,
const string &content) noexcept(
false);
138 inline static std::unique_ptr<CscResources>
instance =
nullptr;
139 inline static mutex initMutex;
140 std::unique_ptr<CscLogger>
logger;
150 optional<fs::path> getInternalPathForLocalFile(
const CscResourceSpec &spec);
152 optional<fs::path> getInternalPathForServiceResource(
const CscResourceSpec &spec);
154 optional<fs::path> getInternalPathForDrive(
const CscResourceSpec &spec,
bool exceptionOnError =
true);
156 fs::path getServiceResourceCachePath(
const string &resourceId);