1
0
mirror of https://github.com/gofiber/fiber.git synced 2025-02-26 09:44:39 +00:00
fiber/group.go
2020-02-22 17:03:30 -05:00

126 lines
2.7 KiB
Go

// 🚀 Fiber is an Express inspired web framework written in Go with 💖
// 📌 API Documentation: https://fiber.wiki
// 📝 Github Repository: https://github.com/gofiber/fiber
package fiber
import "strings"
// Group ...
type Group struct {
prefix string
app *App
}
// Group ...
func (app *App) Group(prefix string, args ...interface{}) *Group {
if len(args) > 0 {
app.register("USE", prefix, args...)
}
return &Group{
prefix: prefix,
app: app,
}
}
// Group ...
func (grp *Group) Group(newPrfx string, args ...interface{}) *Group {
var prefix = grp.prefix
if len(newPrfx) > 0 && newPrfx[0] != '/' && newPrfx[0] != '*' {
newPrfx = "/" + newPrfx
}
// When grouping, always remove single slash
if len(prefix) > 0 && newPrfx == "/" {
newPrfx = ""
}
// Prepent group prefix if exist
prefix = prefix + newPrfx
// Clean path by removing double "//" => "/"
prefix = strings.Replace(prefix, "//", "/", -1)
if len(args) > 0 {
grp.app.register("USE", prefix, args...)
}
return &Group{
prefix: prefix,
app: grp.app,
}
}
// Static ...
func (grp *Group) Static(args ...string) *Group {
grp.app.registerStatic(grp.prefix, args...)
return grp
}
// WebSocket ...
func (grp *Group) WebSocket(args ...interface{}) *Group {
grp.app.register("GET", grp.prefix, args...)
return grp
}
// Connect ...
func (grp *Group) Connect(args ...interface{}) *Group {
grp.app.register("CONNECT", grp.prefix, args...)
return grp
}
// Put ...
func (grp *Group) Put(args ...interface{}) *Group {
grp.app.register("PUT", grp.prefix, args...)
return grp
}
// Post ...
func (grp *Group) Post(args ...interface{}) *Group {
grp.app.register("POST", grp.prefix, args...)
return grp
}
// Delete ...
func (grp *Group) Delete(args ...interface{}) *Group {
grp.app.register("DELETE", grp.prefix, args...)
return grp
}
// Head ...
func (grp *Group) Head(args ...interface{}) *Group {
grp.app.register("HEAD", grp.prefix, args...)
return grp
}
// Patch ...
func (grp *Group) Patch(args ...interface{}) *Group {
grp.app.register("PATCH", grp.prefix, args...)
return grp
}
// Options ...
func (grp *Group) Options(args ...interface{}) *Group {
grp.app.register("OPTIONS", grp.prefix, args...)
return grp
}
// Trace ...
func (grp *Group) Trace(args ...interface{}) *Group {
grp.app.register("TRACE", grp.prefix, args...)
return grp
}
// Get ...
func (grp *Group) Get(args ...interface{}) *Group {
grp.app.register("GET", grp.prefix, args...)
return grp
}
// All ...
func (grp *Group) All(args ...interface{}) *Group {
grp.app.register("ALL", grp.prefix, args...)
return grp
}
// Use ...
func (grp *Group) Use(args ...interface{}) *Group {
grp.app.register("USE", grp.prefix, args...)
return grp
}