mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-12-30 02:28:16 +03:00
1d6d85cff4
Squashed commit of the following: commit586b0eb180
Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Tue Nov 12 19:58:56 2024 +0300 next: upd more commitd729aa150f
Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Tue Nov 12 16:53:15 2024 +0300 next/websvc: upd more commit0c64e6cfc6
Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Mon Nov 11 21:08:51 2024 +0300 next: upd more commit05eec75222
Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Fri Nov 8 19:20:02 2024 +0300 next: upd code
73 lines
2 KiB
Go
73 lines
2 KiB
Go
package websvc
|
|
|
|
import (
|
|
"log/slog"
|
|
"net/http"
|
|
|
|
"github.com/AdguardTeam/golibs/netutil/httputil"
|
|
)
|
|
|
|
// Path pattern constants.
|
|
const (
|
|
PathPatternFrontend = "/"
|
|
PathPatternHealthCheck = "/health-check"
|
|
PathPatternV1SettingsAll = "/api/v1/settings/all"
|
|
PathPatternV1SettingsDNS = "/api/v1/settings/dns"
|
|
PathPatternV1SettingsHTTP = "/api/v1/settings/http"
|
|
PathPatternV1SystemInfo = "/api/v1/system/info"
|
|
)
|
|
|
|
// Route pattern constants.
|
|
const (
|
|
routePatternFrontend = http.MethodGet + " " + PathPatternFrontend
|
|
routePatternGetV1SettingsAll = http.MethodGet + " " + PathPatternV1SettingsAll
|
|
routePatternGetV1SystemInfo = http.MethodGet + " " + PathPatternV1SystemInfo
|
|
routePatternHealthCheck = http.MethodGet + " " + PathPatternHealthCheck
|
|
routePatternPatchV1SettingsDNS = http.MethodPatch + " " + PathPatternV1SettingsDNS
|
|
routePatternPatchV1SettingsHTTP = http.MethodPatch + " " + PathPatternV1SettingsHTTP
|
|
)
|
|
|
|
// route registers all necessary handlers in mux.
|
|
func (svc *Service) route(mux *http.ServeMux) {
|
|
routes := []struct {
|
|
handler http.Handler
|
|
pattern string
|
|
isJSON bool
|
|
}{{
|
|
handler: httputil.HealthCheckHandler,
|
|
pattern: routePatternHealthCheck,
|
|
isJSON: false,
|
|
}, {
|
|
handler: http.FileServer(http.FS(svc.frontend)),
|
|
pattern: routePatternFrontend,
|
|
isJSON: false,
|
|
}, {
|
|
handler: http.HandlerFunc(svc.handleGetSettingsAll),
|
|
pattern: routePatternGetV1SettingsAll,
|
|
isJSON: true,
|
|
}, {
|
|
handler: http.HandlerFunc(svc.handlePatchSettingsDNS),
|
|
pattern: routePatternPatchV1SettingsDNS,
|
|
isJSON: true,
|
|
}, {
|
|
handler: http.HandlerFunc(svc.handlePatchSettingsHTTP),
|
|
pattern: routePatternPatchV1SettingsHTTP,
|
|
isJSON: true,
|
|
}, {
|
|
handler: http.HandlerFunc(svc.handleGetV1SystemInfo),
|
|
pattern: routePatternGetV1SystemInfo,
|
|
isJSON: true,
|
|
}}
|
|
|
|
logMw := httputil.NewLogMiddleware(svc.logger, slog.LevelDebug)
|
|
for _, r := range routes {
|
|
var hdlr http.Handler
|
|
if r.isJSON {
|
|
hdlr = jsonMw(r.handler)
|
|
} else {
|
|
hdlr = r.handler
|
|
}
|
|
|
|
mux.Handle(r.pattern, logMw.Wrap(hdlr))
|
|
}
|
|
}
|