summaryrefslogtreecommitdiff
path: root/internal/config
diff options
context:
space:
mode:
authorjwijenbergh <jeroenwijenbergh@protonmail.com>2022-06-17 14:00:40 +0200
committerjwijenbergh <jeroenwijenbergh@protonmail.com>2022-09-20 20:31:23 +0200
commit7af07c596166bf93b79a9d0816b1950dde360fb9 (patch)
tree08b5374c34d6c33b3c596ed981bfb069cca37ade /internal/config
parent6dc7b64f634f6dcbeedea24c741382366a3c7b8c (diff)
Server: Implement function for checking renewal button visibility
Diffstat (limited to 'internal/config')
-rw-r--r--internal/config/config.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/internal/config/config.go b/internal/config/config.go
new file mode 100644
index 0000000..a9ebec7
--- /dev/null
+++ b/internal/config/config.go
@@ -0,0 +1,60 @@
+package config
+
+import (
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "path"
+ "github.com/jwijenbergh/eduvpn-common/internal/util"
+)
+
+type Config struct {
+ Name string
+ Directory string
+}
+
+func (config *Config) Init(name string, directory string) {
+ config.Name = name
+ config.Directory = directory
+}
+
+func (config *Config) GetFilename() string {
+ pathString := path.Join(config.Directory, config.Name)
+ return fmt.Sprintf("%s.json", pathString)
+}
+
+func (config *Config) Save(readStruct interface{}) error {
+ configDirErr := util.EnsureDirectory(config.Directory)
+ if configDirErr != nil {
+ return &ConfigSaveError{Err: configDirErr}
+ }
+ jsonString, marshalErr := json.Marshal(readStruct)
+ if marshalErr != nil {
+ return &ConfigSaveError{Err: marshalErr}
+ }
+ return ioutil.WriteFile(config.GetFilename(), jsonString, 0o600)
+}
+
+func (config *Config) Load(writeStruct interface{}) error {
+ bytes, readErr := ioutil.ReadFile(config.GetFilename())
+ if readErr != nil {
+ return &ConfigLoadError{Err: readErr}
+ }
+ return json.Unmarshal(bytes, writeStruct)
+}
+
+type ConfigSaveError struct {
+ Err error
+}
+
+func (e *ConfigSaveError) Error() string {
+ return fmt.Sprintf("failed to save config with error: %v", e.Err)
+}
+
+type ConfigLoadError struct {
+ Err error
+}
+
+func (e *ConfigLoadError) Error() string {
+ return fmt.Sprintf("failed to load config with error: %v", e.Err)
+}