From 78000acf6cf14347932660017c742adba32e05a1 Mon Sep 17 00:00:00 2001 From: NiseVoid Date: Sun, 19 Aug 2018 17:03:53 +0200 Subject: [PATCH] Add Group --- group.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ router.go | 4 ++++ 2 files changed, 53 insertions(+) create mode 100644 group.go diff --git a/group.go b/group.go new file mode 100644 index 0000000..86724d9 --- /dev/null +++ b/group.go @@ -0,0 +1,49 @@ +package router + +import urlpath "path" + +type Group struct { + router *Router + prefix string +} + +func (g *Group) Group(prefix string) *Group { + return &Group{prefix: urlpath.Join(g.prefix, prefix), router: g.router} +} + +// GET adds a GET route +func (g *Group) GET(path string, handle GetHandle) { + g.router.GET(urlpath.Join(g.prefix, path), handle) +} + +// POST adds a POST route +func (g *Group) POST(path string, handle interface{}) { + g.router.POST(urlpath.Join(g.prefix, path), handle) +} + +// DELETE adds a DELETE route +func (g *Group) DELETE(path string, handle GetHandle) { + g.router.DELETE(urlpath.Join(g.prefix, path), handle) +} + +// PUT adds a PUT route +func (g *Group) PUT(path string, handle interface{}) { + checkInterfaceHandle(handle) + g.router.PUT(urlpath.Join(g.prefix, path), handle) +} + +// PATCH adds a PATCH route +func (g *Group) PATCH(path string, handle interface{}) { + checkInterfaceHandle(handle) + g.router.PATCH(urlpath.Join(g.prefix, path), handle) +} + +// HEAD adds a HEAD route +func (g *Group) HEAD(path string, handle GetHandle) { + g.router.HEAD(urlpath.Join(g.prefix, path), handle) +} + +// OPTIONS adds a OPTIONS route +func (g *Group) OPTIONS(path string, handle GetHandle) { + g.router.OPTIONS(urlpath.Join(g.prefix, path), handle) +} diff --git a/router.go b/router.go index df9d566..31d4b7a 100644 --- a/router.go +++ b/router.go @@ -29,6 +29,10 @@ func New() *Router { return &Router{} } +func (r *Router) Group(prefix string) *Group { + return &Group{prefix: prefix, router: r} +} + // GET adds a GET route func (r *Router) GET(path string, handle GetHandle) { r.routes = append(r.routes, route{`GET`, path, handle})