diff --git a/internal/api/router.go b/internal/api/router.go index 7573d916..04c3993a 100644 --- a/internal/api/router.go +++ b/internal/api/router.go @@ -14,9 +14,10 @@ import ( ) type ApiManagerCtx struct { - sessions types.SessionManager - desktop types.DesktopManager - capture types.CaptureManager + sessions types.SessionManager + desktop types.DesktopManager + capture types.CaptureManager + routers map[string]func(chi.Router) } func New( @@ -27,9 +28,10 @@ func New( ) *ApiManagerCtx { return &ApiManagerCtx{ - sessions: sessions, - desktop: desktop, - capture: capture, + sessions: sessions, + desktop: desktop, + capture: capture, + routers: make(map[string]func(chi.Router)), } } @@ -46,6 +48,10 @@ func (api *ApiManagerCtx) Route(r chi.Router) { session := auth.GetSession(r) utils.HttpBadRequest(w, "Hi `" + session.ID() + "`, you are authenticated.") }) + + for path, router := range api.routers { + r.Route(path, router) + } } func (api *ApiManagerCtx) Authenticate(next http.Handler) http.Handler { @@ -58,3 +64,7 @@ func (api *ApiManagerCtx) Authenticate(next http.Handler) http.Handler { } }) } + +func (api *ApiManagerCtx) AddRouter(path string, router func(chi.Router)) { + api.routers[path] = router +}