This repository has been archived by the owner on Mar 16, 2024. It is now read-only.
/
routes.go
92 lines (75 loc) · 2.57 KB
/
routes.go
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package http
import (
"net/http"
"github.com/prometheus/client_golang/prometheus"
"gh.tarampamp.am/mikrotik-hosts-parser/v4/internal/pkg/checkers"
"gh.tarampamp.am/mikrotik-hosts-parser/v4/internal/pkg/http/fileserver"
apiSettings "gh.tarampamp.am/mikrotik-hosts-parser/v4/internal/pkg/http/handlers/api/settings"
apiVersion "gh.tarampamp.am/mikrotik-hosts-parser/v4/internal/pkg/http/handlers/api/version"
"gh.tarampamp.am/mikrotik-hosts-parser/v4/internal/pkg/http/handlers/generate"
"gh.tarampamp.am/mikrotik-hosts-parser/v4/internal/pkg/http/handlers/healthz"
metricsHandler "gh.tarampamp.am/mikrotik-hosts-parser/v4/internal/pkg/http/handlers/metrics"
"gh.tarampamp.am/mikrotik-hosts-parser/v4/internal/pkg/http/middlewares/nocache"
"gh.tarampamp.am/mikrotik-hosts-parser/v4/internal/pkg/metrics"
"gh.tarampamp.am/mikrotik-hosts-parser/v4/internal/pkg/version"
)
func (s *Server) registerScriptGeneratorHandlers(registerer prometheus.Registerer) error {
m := metrics.NewGenerator()
if err := m.Register(registerer); err != nil {
return err
}
h, err := generate.NewHandler(s.ctx, s.log, s.cacher, s.cfg, &m)
if err != nil {
return err
}
s.router.
Handle("/script/source", h).
Methods(http.MethodGet).
Name("script_generator")
return nil
}
func (s *Server) registerAPIHandlers() {
apiRouter := s.router.
PathPrefix("/api").
Subrouter()
apiRouter.Use(nocache.New())
apiRouter.
HandleFunc("/settings", apiSettings.NewHandler(*s.cfg, s.cacher)).
Methods(http.MethodGet).
Name("api_get_settings")
apiRouter.
HandleFunc("/version", apiVersion.NewHandler(version.Version())).
Methods(http.MethodGet).
Name("api_get_version")
}
func (s *Server) registerServiceHandlers(registry prometheus.Gatherer) {
s.router.
HandleFunc("/metrics", metricsHandler.NewHandler(registry)).
Methods(http.MethodGet).
Name("metrics")
s.router.
HandleFunc("/ready", healthz.NewHandler(checkers.NewReadyChecker(s.ctx, s.rdb))).
Methods(http.MethodGet, http.MethodHead).
Name("ready")
s.router.
HandleFunc("/live", healthz.NewHandler(checkers.NewLiveChecker())).
Methods(http.MethodGet, http.MethodHead).
Name("live")
}
func (s *Server) registerFileServerHandler(resourcesDir string) error {
fs, err := fileserver.NewFileServer(fileserver.Settings{
FilesRoot: resourcesDir,
IndexFileName: "index.html",
ErrorFileName: "__error__.html",
RedirectIndexFileToRoot: true,
})
if err != nil {
return err
}
s.router.
PathPrefix("/").
Methods(http.MethodGet, http.MethodHead).
Handler(fs).
Name("static")
return nil
}