Added basic functionality
This commit is contained in:
51
Context.go
Normal file
51
Context.go
Normal file
@ -0,0 +1,51 @@
|
||||
package aero
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// maxParams defines the maximum number of parameters per route.
|
||||
const maxParams = 16
|
||||
|
||||
// Context represents the interface for a request & response context.
|
||||
type Context interface {
|
||||
Bytes([]byte) error
|
||||
Error(int, error) error
|
||||
}
|
||||
|
||||
// context represents a request & response context.
|
||||
type context struct {
|
||||
request *http.Request
|
||||
response http.ResponseWriter
|
||||
paramNames [maxParams]string
|
||||
paramValues [maxParams]string
|
||||
paramCount int
|
||||
}
|
||||
|
||||
// newContext returns a new context from the pool.
|
||||
func newContext(request *http.Request, response http.ResponseWriter) *context {
|
||||
ctx := contextPool.Get().(*context)
|
||||
ctx.request = request
|
||||
ctx.response = response
|
||||
ctx.paramCount = 0
|
||||
return ctx
|
||||
}
|
||||
|
||||
// Bytes responds with a raw byte slice.
|
||||
func (ctx *context) Bytes(body []byte) error {
|
||||
_, err := ctx.response.Write(body)
|
||||
return err
|
||||
}
|
||||
|
||||
// Error is used for sending error messages to the client.
|
||||
func (ctx *context) Error(status int, err error) error {
|
||||
ctx.response.WriteHeader(status)
|
||||
return err
|
||||
}
|
||||
|
||||
// addParameter adds a new parameter to the context.
|
||||
func (ctx *context) addParameter(name string, value string) {
|
||||
ctx.paramNames[ctx.paramCount] = name
|
||||
ctx.paramValues[ctx.paramCount] = value
|
||||
ctx.paramCount++
|
||||
}
|
Reference in New Issue
Block a user