esp8266_web_settings beta
ConfigFile.h
1/*
2 * Copyright (c) 2021, 2022 G. R. McDorman
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in all
12 * copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 * SOFTWARE.
21 */
22
23#pragma once
24
25#include <optional>
26#include <vector>
27
28#include <ArduinoJson.h>
29
30namespace grmcdorman::device
31{
32 class Device;
33
40 {
41 public:
48 ConfigFile(): ConfigFile("/config.json")
49 {
50 }
51
58 explicit ConfigFile(const char *explicit_path): path(explicit_path)
59 {
60 }
61
67 const char *get_path() const
68 {
69 return path;
70 }
71
81 void save(const std::vector<Device *> &devices);
82
91 bool load(const std::vector<Device *> &devices);
92
98 void save(DynamicJsonDocument &json);
99
108 std::optional<DynamicJsonDocument> load();
109
110 private:
111 const char *path;
112 };
113}
This class provides simple JSON configuration file save/load.
Definition: ConfigFile.h:40
ConfigFile(const char *explicit_path)
Construct a new Config File object.
Definition: ConfigFile.h:58
std::optional< DynamicJsonDocument > load()
Load the JSON settings from the file system.
Definition: ConfigFile.cpp:98
ConfigFile()
Construct a new Config File object.
Definition: ConfigFile.h:48
const char * get_path() const
Get the path.
Definition: ConfigFile.h:67
void save(const std::vector< Device * > &devices)
Save all device settings.
Definition: ConfigFile.cpp:31