mirror of https://github.com/gofiber/fiber.git
137 lines
2.4 KiB
Go
137 lines
2.4 KiB
Go
package fiber
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/valyala/fasthttp"
|
|
)
|
|
|
|
// Context struct
|
|
type Context struct {
|
|
next bool
|
|
params *[]string
|
|
values []string
|
|
Fasthttp *fasthttp.RequestCtx
|
|
}
|
|
|
|
// Context pool
|
|
var ctxPool = sync.Pool{
|
|
New: func() interface{} {
|
|
return new(Context)
|
|
},
|
|
}
|
|
|
|
// Get new Context from pool
|
|
func acquireCtx(fctx *fasthttp.RequestCtx) *Context {
|
|
ctx := ctxPool.Get().(*Context)
|
|
ctx.Fasthttp = fctx
|
|
return ctx
|
|
}
|
|
|
|
// Return Context to pool
|
|
func releaseCtx(ctx *Context) {
|
|
ctx.next = false
|
|
ctx.params = nil
|
|
ctx.values = nil
|
|
ctx.Fasthttp = nil
|
|
ctxPool.Put(ctx)
|
|
}
|
|
|
|
// Next : Call the next middleware function in the stack.
|
|
func (ctx *Context) Next() {
|
|
ctx.next = true
|
|
ctx.params = nil
|
|
ctx.values = nil
|
|
}
|
|
|
|
// Params :
|
|
func (ctx *Context) Params(key string) string {
|
|
if ctx.params == nil {
|
|
return ""
|
|
}
|
|
for i := 0; i < len(*ctx.params); i++ {
|
|
if (*ctx.params)[i] == key {
|
|
return ctx.values[i]
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// Method https://expressjs.com/en/4x/api.html#req.method
|
|
func (ctx *Context) Method() string {
|
|
return b2s(ctx.Fasthttp.Method())
|
|
}
|
|
|
|
// Path https://expressjs.com/en/4x/api.html#req.path
|
|
func (ctx *Context) Path() string {
|
|
return b2s(ctx.Fasthttp.Path())
|
|
}
|
|
package fiber
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/valyala/fasthttp"
|
|
)
|
|
|
|
// Context struct
|
|
type Context struct {
|
|
next bool
|
|
params *[]string
|
|
values []string
|
|
Fasthttp *fasthttp.RequestCtx
|
|
}
|
|
|
|
// Context pool
|
|
var ctxPool = sync.Pool{
|
|
New: func() interface{} {
|
|
return new(Context)
|
|
},
|
|
}
|
|
|
|
// Get new Context from pool
|
|
func acquireCtx(fctx *fasthttp.RequestCtx) *Context {
|
|
ctx := ctxPool.Get().(*Context)
|
|
ctx.Fasthttp = fctx
|
|
return ctx
|
|
}
|
|
|
|
// Return Context to pool
|
|
func releaseCtx(ctx *Context) {
|
|
ctx.next = false
|
|
ctx.params = nil
|
|
ctx.values = nil
|
|
ctx.Fasthttp = nil
|
|
ctxPool.Put(ctx)
|
|
}
|
|
|
|
// Next : Call the next middleware function in the stack.
|
|
func (ctx *Context) Next() {
|
|
ctx.next = true
|
|
ctx.params = nil
|
|
ctx.values = nil
|
|
}
|
|
|
|
// Params :
|
|
func (ctx *Context) Params(key string) string {
|
|
if ctx.params == nil {
|
|
return ""
|
|
}
|
|
for i := 0; i < len(*ctx.params); i++ {
|
|
if (*ctx.params)[i] == key {
|
|
return ctx.values[i]
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// Method https://expressjs.com/en/4x/api.html#req.method
|
|
func (ctx *Context) Method() string {
|
|
return b2s(ctx.Fasthttp.Method())
|
|
}
|
|
|
|
// Path https://expressjs.com/en/4x/api.html#req.path
|
|
func (ctx *Context) Path() string {
|
|
return b2s(ctx.Fasthttp.Path())
|
|
}
|