diff --git a/ginext/routes.go b/ginext/routes.go index 4a956e4..a28377f 100644 --- a/ginext/routes.go +++ b/ginext/routes.go @@ -5,6 +5,12 @@ import ( "net/http" ) +var anyMethods = []string{ + http.MethodGet, http.MethodPost, http.MethodPut, http.MethodPatch, + http.MethodHead, http.MethodOptions, http.MethodDelete, http.MethodConnect, + http.MethodTrace, +} + type GinRoutesWrapper struct { wrapper *GinWrapper routes gin.IRouter @@ -13,7 +19,7 @@ type GinRoutesWrapper struct { type GinRouteBuilder struct { routes *GinRoutesWrapper - method string + methods []string relPath string handlers []gin.HandlerFunc } @@ -27,35 +33,39 @@ func (w *GinRoutesWrapper) Group(relativePath string) *GinRoutesWrapper { } func (w *GinRoutesWrapper) GET(relativePath string) *GinRouteBuilder { - return &GinRouteBuilder{routes: w, method: http.MethodGet, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} + return &GinRouteBuilder{routes: w, methods: []string{http.MethodGet}, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} } func (w *GinRoutesWrapper) POST(relativePath string) *GinRouteBuilder { - return &GinRouteBuilder{routes: w, method: http.MethodPost, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} + return &GinRouteBuilder{routes: w, methods: []string{http.MethodPost}, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} } func (w *GinRoutesWrapper) DELETE(relativePath string) *GinRouteBuilder { - return &GinRouteBuilder{routes: w, method: http.MethodDelete, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} + return &GinRouteBuilder{routes: w, methods: []string{http.MethodDelete}, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} } func (w *GinRoutesWrapper) PATCH(relativePath string) *GinRouteBuilder { - return &GinRouteBuilder{routes: w, method: http.MethodPatch, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} + return &GinRouteBuilder{routes: w, methods: []string{http.MethodPatch}, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} } func (w *GinRoutesWrapper) PUT(relativePath string) *GinRouteBuilder { - return &GinRouteBuilder{routes: w, method: http.MethodPut, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} + return &GinRouteBuilder{routes: w, methods: []string{http.MethodPut}, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} } func (w *GinRoutesWrapper) OPTIONS(relativePath string) *GinRouteBuilder { - return &GinRouteBuilder{routes: w, method: http.MethodOptions, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} + return &GinRouteBuilder{routes: w, methods: []string{http.MethodOptions}, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} } func (w *GinRoutesWrapper) HEAD(relativePath string) *GinRouteBuilder { - return &GinRouteBuilder{routes: w, method: http.MethodHead, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} + return &GinRouteBuilder{routes: w, methods: []string{http.MethodHead}, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} } func (w *GinRoutesWrapper) COUNT(relativePath string) *GinRouteBuilder { - return &GinRouteBuilder{routes: w, method: "COUNT", relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} + return &GinRouteBuilder{routes: w, methods: []string{"COUNT"}, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} +} + +func (w *GinRoutesWrapper) Any(relativePath string) *GinRouteBuilder { + return &GinRouteBuilder{routes: w, methods: anyMethods, relPath: relativePath, handlers: make([]gin.HandlerFunc, 0)} } func (w *GinRouteBuilder) Use(middleware gin.HandlerFunc) *GinRouteBuilder { @@ -65,5 +75,11 @@ func (w *GinRouteBuilder) Use(middleware gin.HandlerFunc) *GinRouteBuilder { func (w *GinRouteBuilder) Handle(handler WHandlerFunc) { w.handlers = append(w.handlers, Wrap(w.routes.wrapper, handler)) - w.routes.routes.Handle(w.method, w.relPath, w.handlers...) + for _, m := range w.methods { + w.routes.routes.Handle(m, w.relPath, w.handlers...) + } +} + +func (w *GinWrapper) NoRoute(handler WHandlerFunc) { + w.engine.NoRoute(Wrap(w, handler)) } diff --git a/goextVersion.go b/goextVersion.go index ef42726..4115b95 100644 --- a/goextVersion.go +++ b/goextVersion.go @@ -1,5 +1,5 @@ package goext -const GoextVersion = "0.0.176" +const GoextVersion = "0.0.177" -const GoextVersionTimestamp = "2023-07-18T16:01:34+0200" +const GoextVersionTimestamp = "2023-07-18T16:08:24+0200"