fiber/context.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())
}