summaryrefslogtreecommitdiff
path: root/internal/rules/loader.go
blob: 05ba1a0321539b3347810188e8968b8bf52f3b49 (plain)
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")
}