WebFramework v3.0.12
Web framework for C++.
Loading...
Searching...
No Matches
JSONSettingsParser.cpp
1#include "JSONSettingsParser.h"
2
3#include "JSONParser.h"
4
5#include "Exceptions/FileDoesNotExistException.h"
6#include "Exceptions/CantFindValueException.h"
7#include "Strings.h"
8
9using namespace std;
10
11namespace framework
12{
13 namespace utility
14 {
15 JSONSettingsParser::ExecutorSettings::ExecutorSettings() :
16 executorLoadType(loadType::none)
17 {
18
19 }
20
21 JSONSettingsParser::JSONSettingsParser(const string& JSONSettings)
22 {
23 ifstream in(JSONSettings);
24
25 if (!in.is_open())
26 {
27 throw file_manager::exceptions::FileDoesNotExistException(JSONSettings);
28 }
29
30 json::JSONParser parser;
31
32 in >> parser;
33
34 in.close();
35
36 for (const auto& [name, description] : parser)
37 {
38 const json::utility::jsonObject& data = get<json::utility::jsonObject>(description);
39 const string& loadType = data.getString("loadType");
40 ExecutorSettings executorSettings;
41
42 data.tryGetObject("initParameters", executorSettings.initParameters);
43
44 executorSettings.name = name;
45
46 if (loadType == json_settings_values::initializationLoadTypeValue)
47 {
48 executorSettings.executorLoadType = ExecutorSettings::loadType::initialization;
49 }
50 else if (loadType == json_settings_values::dynamicLoadTypeValue)
51 {
52 executorSettings.executorLoadType = ExecutorSettings::loadType::dynamic;
53 }
54 else
55 {
56 throw runtime_error("Wrong loadType");
57 }
58
59 settings.try_emplace(::utility::strings::replaceAll(data.getString("route"), " ", "%20"), move(executorSettings));
60 }
61 }
62
63 const unordered_map<string, JSONSettingsParser::ExecutorSettings>& JSONSettingsParser::getSettings() const
64 {
65 return settings;
66 }
67
68 const JSONSettingsParser::ExecutorSettings& JSONSettingsParser::getExecutorSettings(const string& executorName) const
69 {
70 return settings.at(executorName);
71 }
72 }
73}