1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
package rules
import (
"encoding/json"
"os"
"path/filepath"
"vpnem/internal/models"
)
type Store struct {
dataDir string
}
func NewStore(dataDir string) *Store {
return &Store{dataDir: dataDir}
}
func (s *Store) LoadServers() (*models.ServersResponse, error) {
data, err := os.ReadFile(filepath.Join(s.dataDir, "servers.json"))
if err != nil {
return nil, err
}
var resp models.ServersResponse
if err := json.Unmarshal(data, &resp); err != nil {
return nil, err
}
return &resp, nil
}
func (s *Store) LoadRuleSets() (*models.RuleSetManifest, error) {
data, err := os.ReadFile(filepath.Join(s.dataDir, "rulesets.json"))
if err != nil {
return nil, err
}
var manifest models.RuleSetManifest
if err := json.Unmarshal(data, &manifest); err != nil {
return nil, err
}
return &manifest, nil
}
func (s *Store) LoadVersion() (*models.VersionResponse, error) {
data, err := os.ReadFile(filepath.Join(s.dataDir, "version.json"))
if err != nil {
return nil, err
}
var ver models.VersionResponse
if err := json.Unmarshal(data, &ver); err != nil {
return nil, err
}
return &ver, nil
}
func (s *Store) RulesDir() string {
return filepath.Join(s.dataDir, "rules")
}
func (s *Store) ReleasesDir() string {
return filepath.Join(s.dataDir, "releases")
}
|