Conscience Core
CscResources.h
Go to the documentation of this file.
1 #ifndef CscResources_h
2 #define CscResources_h
3 
4 #include "CscCommon.h"
5 #include "CscResourceSpec.h"
7 
8 using std::string, std::vector, std::shared_ptr, std::ifstream, std::mutex, std::optional, std::exception;
9 using namespace conscience_utils;
10 using namespace conscience_utils::logging;
12 
13 namespace fs = std::filesystem;
14 
16 
17  class UnsupportedSpecException : public exception {
18  public:
19  UnsupportedSpecException(const string &errorMessage) noexcept : errorMessage(errorMessage){};
20 
21  const char *what() const noexcept override {
22  return errorMessage.c_str();
23  }
24 
25  ~UnsupportedSpecException() noexcept override = default;
26 
27  private:
28  const string errorMessage;
29  };
30 
31  class UnavailableResourceException : public exception {
32  public:
33  UnavailableResourceException(const string &errorMessage) noexcept : errorMessage(errorMessage){};
34 
35  const char *what() const noexcept override {
36  return errorMessage.c_str();
37  }
38 
39  ~UnavailableResourceException() noexcept override = default;
40 
41  private:
42  const string errorMessage;
43  };
44 
45  class CscResources {
46  public:
53  ifstream resolveAsStream(const CscResourceSpec &spec) noexcept(false);
54 
61  vector<unsigned char> resolveAsBytes(const CscResourceSpec &spec) noexcept(false);
62 
69  string resolveAsString(const CscResourceSpec &spec) noexcept(false);
70 
78  void resolveAndExportToFile(const CscResourceSpec &spec, const fs::path &outPath) noexcept(false);
79 
91  fs::path getInternalPath(const CscResourceSpec &spec) noexcept(false);
92 
103  unsigned long long getLastModificationTime(const CscResourceSpec &spec) noexcept(false);
104 
115  void publish(const CscResourceSpec &spec, const string &content) noexcept(false);
116 
127  void remove(const CscResourceSpec &spec) noexcept(false);
128 
129  bool checkIfPathExistOnDrive(const CscResourceSpec &spec);
130 
131  static CscResources &Instance();
132 
134 
135  virtual ~CscResources() = default;
136 
137  private:
138  inline static std::unique_ptr<CscResources> instance = nullptr;
139  inline static mutex initMutex;
140  std::unique_ptr<CscLogger> logger;
141 
142  CscResources();
143 
144  const CscHttpClient &httpClient;
145 
146  const CscHttpClient &getHttpClient() {
147  return httpClient;
148  }
149 
150  optional<fs::path> getInternalPathForLocalFile(const CscResourceSpec &spec);
151 
152  optional<fs::path> getInternalPathForServiceResource(const CscResourceSpec &spec);
153 
154  optional<fs::path> getInternalPathForDrive(const CscResourceSpec &spec, bool exceptionOnError = true);
155 
156  fs::path getServiceResourceCachePath(const string &resourceId);
157  };
158 }
159 
160 #endif
conscience_core::communication::HTTP::CscHttpClient
Definition: CscHttpClient.h:135
conscience_core::core_objects::resources::CscResourceSpec
Definition: CscResourceSpec.h:32
CscResourceSpec.h
conscience_core::core_objects::resources
Definition: CscLocalFileResourceSpec.h:18
conscience_core::core_objects::resources::UnsupportedSpecException::UnsupportedSpecException
UnsupportedSpecException(const string &errorMessage) noexcept
Definition: CscResources.h:19
conscience_core::core_objects::resources::UnavailableResourceException::UnavailableResourceException
UnavailableResourceException(const string &errorMessage) noexcept
Definition: CscResources.h:33
logger
static std::unique_ptr< CscLogger > logger
Definition: gltfHelpers.cpp:6
conscience_core::communication::HTTP
Definition: CscHttpClient.cpp:13
conscience_utils::logging
Definition: conscience_log.cpp:20
conscience_core::core_objects::resources::UnsupportedSpecException::what
const char * what() const noexcept override
Definition: CscResources.h:21
CscCommon.h
conscience_core::core_objects::resources::CscResources
Definition: CscResources.h:45
conscience_server::entities::instance
ServerEntities * instance
Definition: ServerEntities.cpp:39
conscience_utils
Definition: CscEntityReflexion.h:50
conscience_core::core_objects::resources::UnavailableResourceException::what
const char * what() const noexcept override
Definition: CscResources.h:35
CscHttpClient.h
conscience_core::core_objects::resources::UnavailableResourceException
Definition: CscResources.h:31
conscience_core::core_objects::resources::UnsupportedSpecException
Definition: CscResources.h:17