@@ -37,13 +37,15 @@ type (
3737 NewGroup (
3838 pattern string ,
3939 middlewares ... func (next http.Handler ) http.Handler ,
40- ) * Router
41- RegisterGroup (router * Router )
40+ ) RouterWrapper
41+ RegisterGroup (router RouterWrapper )
4242 Pattern () string
4343 RelativePath () string
4444 FullPath () string
4545 Method () string
4646 ServeStaticFiles (pattern , path string )
47+ Logger () * Logger
48+ Mode () * goflagsmode.Flag
4749 }
4850
4951 // Router is the route group struct
@@ -95,7 +97,7 @@ func NewRouter(
9597 mode * goflagsmode.Flag ,
9698 logger * Logger ,
9799 middlewares ... func (next http.Handler ) http.Handler ,
98- ) (* Router , error ) {
100+ ) (RouterWrapper , error ) {
99101 // Split the method and path from the pattern
100102 method , path , err := SplitPattern (pattern )
101103 if err != nil {
@@ -133,16 +135,16 @@ func NewBaseRouter(
133135 mode * goflagsmode.Flag ,
134136 logger * Logger ,
135137 middlewares ... func (next http.Handler ) http.Handler ,
136- ) (* Router , error ) {
138+ ) (RouterWrapper , error ) {
137139 return NewRouter ("/" , mode , logger , middlewares ... )
138140}
139141
140142// NewGroup creates a new router group
141143func NewGroup (
142- baseRouter * Router ,
144+ baseRouter RouterWrapper ,
143145 pattern string ,
144146 middlewares ... func (next http.Handler ) http.Handler ,
145- ) (* Router , error ) {
147+ ) (RouterWrapper , error ) {
146148 // Check if the base router is nil
147149 if baseRouter == nil {
148150 return nil , ErrNilRouter
@@ -156,12 +158,12 @@ func NewGroup(
156158
157159 // Check the base router path
158160 var fullPath string
159- if relativePath == "/" && baseRouter .fullPath == "/" {
161+ if relativePath == "/" && baseRouter .FullPath () == "/" {
160162 fullPath = "/"
161- } else if baseRouter .fullPath [len (baseRouter .fullPath )- 1 ] == '/' {
162- fullPath = baseRouter .fullPath + relativePath [1 :]
163+ } else if baseRouter .FullPath () [len (baseRouter .FullPath () )- 1 ] == '/' {
164+ fullPath = baseRouter .FullPath () + relativePath [1 :]
163165 } else {
164- fullPath = baseRouter .fullPath + relativePath
166+ fullPath = baseRouter .FullPath () + relativePath
165167 }
166168
167169 // Initialize the multiplexer
@@ -191,12 +193,12 @@ func NewGroup(
191193 middlewares : allMiddlewares ,
192194 firstHandler : firstHandler ,
193195 mux : mux ,
194- logger : baseRouter .logger ,
196+ logger : baseRouter .Logger () ,
195197 pattern : pattern ,
196198 relativePath : relativePath ,
197199 fullPath : fullPath ,
198200 method : method ,
199- mode : baseRouter .mode ,
201+ mode : baseRouter .Mode () ,
200202 }
201203
202204 // Register the group
@@ -301,15 +303,15 @@ func (r *Router) RegisterHandler(pattern string, handler http.Handler) {
301303}
302304
303305// RegisterGroup registers a new router group with a path and a router
304- func (r * Router ) RegisterGroup (router * Router ) {
305- r .RegisterHandler (router .Pattern (), router .mux )
306+ func (r * Router ) RegisterGroup (router RouterWrapper ) {
307+ r .RegisterHandler (router .Pattern (), router .Mux () )
306308}
307309
308310// NewGroup creates a new router group with a path
309311func (r * Router ) NewGroup (
310312 pattern string ,
311313 middlewares ... func (next http.Handler ) http.Handler ,
312- ) * Router {
314+ ) RouterWrapper {
313315 // Create a new group
314316 newGroup , _ := NewGroup (r , pattern , middlewares ... )
315317 return newGroup
@@ -351,3 +353,13 @@ func (r *Router) ServeStaticFiles(
351353 http .StripPrefix (pattern , http .FileServer (http .Dir (path ))).ServeHTTP ,
352354 )
353355}
356+
357+ // Logger returns the logger
358+ func (r * Router ) Logger () * Logger {
359+ return r .logger
360+ }
361+
362+ // Mode returns the mode
363+ func (r * Router ) Mode () * goflagsmode.Flag {
364+ return r .mode
365+ }
0 commit comments