@@ -37,13 +37,15 @@ type (
37
37
NewGroup (
38
38
pattern string ,
39
39
middlewares ... func (next http.Handler ) http.Handler ,
40
- ) * Router
41
- RegisterGroup (router * Router )
40
+ ) RouterWrapper
41
+ RegisterGroup (router RouterWrapper )
42
42
Pattern () string
43
43
RelativePath () string
44
44
FullPath () string
45
45
Method () string
46
46
ServeStaticFiles (pattern , path string )
47
+ Logger () * Logger
48
+ Mode () * goflagsmode.Flag
47
49
}
48
50
49
51
// Router is the route group struct
@@ -95,7 +97,7 @@ func NewRouter(
95
97
mode * goflagsmode.Flag ,
96
98
logger * Logger ,
97
99
middlewares ... func (next http.Handler ) http.Handler ,
98
- ) (* Router , error ) {
100
+ ) (RouterWrapper , error ) {
99
101
// Split the method and path from the pattern
100
102
method , path , err := SplitPattern (pattern )
101
103
if err != nil {
@@ -133,16 +135,16 @@ func NewBaseRouter(
133
135
mode * goflagsmode.Flag ,
134
136
logger * Logger ,
135
137
middlewares ... func (next http.Handler ) http.Handler ,
136
- ) (* Router , error ) {
138
+ ) (RouterWrapper , error ) {
137
139
return NewRouter ("/" , mode , logger , middlewares ... )
138
140
}
139
141
140
142
// NewGroup creates a new router group
141
143
func NewGroup (
142
- baseRouter * Router ,
144
+ baseRouter RouterWrapper ,
143
145
pattern string ,
144
146
middlewares ... func (next http.Handler ) http.Handler ,
145
- ) (* Router , error ) {
147
+ ) (RouterWrapper , error ) {
146
148
// Check if the base router is nil
147
149
if baseRouter == nil {
148
150
return nil , ErrNilRouter
@@ -156,12 +158,12 @@ func NewGroup(
156
158
157
159
// Check the base router path
158
160
var fullPath string
159
- if relativePath == "/" && baseRouter .fullPath == "/" {
161
+ if relativePath == "/" && baseRouter .FullPath () == "/" {
160
162
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 :]
163
165
} else {
164
- fullPath = baseRouter .fullPath + relativePath
166
+ fullPath = baseRouter .FullPath () + relativePath
165
167
}
166
168
167
169
// Initialize the multiplexer
@@ -191,12 +193,12 @@ func NewGroup(
191
193
middlewares : allMiddlewares ,
192
194
firstHandler : firstHandler ,
193
195
mux : mux ,
194
- logger : baseRouter .logger ,
196
+ logger : baseRouter .Logger () ,
195
197
pattern : pattern ,
196
198
relativePath : relativePath ,
197
199
fullPath : fullPath ,
198
200
method : method ,
199
- mode : baseRouter .mode ,
201
+ mode : baseRouter .Mode () ,
200
202
}
201
203
202
204
// Register the group
@@ -301,15 +303,15 @@ func (r *Router) RegisterHandler(pattern string, handler http.Handler) {
301
303
}
302
304
303
305
// 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 () )
306
308
}
307
309
308
310
// NewGroup creates a new router group with a path
309
311
func (r * Router ) NewGroup (
310
312
pattern string ,
311
313
middlewares ... func (next http.Handler ) http.Handler ,
312
- ) * Router {
314
+ ) RouterWrapper {
313
315
// Create a new group
314
316
newGroup , _ := NewGroup (r , pattern , middlewares ... )
315
317
return newGroup
@@ -351,3 +353,13 @@ func (r *Router) ServeStaticFiles(
351
353
http .StripPrefix (pattern , http .FileServer (http .Dir (path ))).ServeHTTP ,
352
354
)
353
355
}
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