48 lines
1010 B
Go
48 lines
1010 B
Go
package router
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"net/http"
|
|
)
|
|
|
|
type Context struct {
|
|
Ctx context.Context
|
|
Request *http.Request
|
|
Writer http.ResponseWriter
|
|
PathMap map[string]string
|
|
}
|
|
|
|
func NewContext(writer http.ResponseWriter, request *http.Request) *Context {
|
|
ctx := context.Background()
|
|
rctx := &Context{
|
|
Writer: writer,
|
|
Request: request,
|
|
Ctx: ctx,
|
|
PathMap: make(map[string]string),
|
|
}
|
|
return rctx
|
|
}
|
|
|
|
func (rctx *Context) SetHeader(key, value string) {
|
|
rctx.Writer.Header().Set(key, value)
|
|
}
|
|
|
|
func (rctx *Context) SetStatus(httpStatus int) {
|
|
rctx.Writer.WriteHeader(httpStatus)
|
|
}
|
|
|
|
func (rctx *Context) SendJSON(payload any) {
|
|
rctx.Writer.Header().Set("Content-Type", "application/json")
|
|
json.NewEncoder(rctx.Writer).Encode(payload)
|
|
}
|
|
|
|
func (rctx *Context) SendText(payload string) {
|
|
rctx.Writer.Header().Set("Content-Type", "text/plain")
|
|
rctx.Writer.Write([]byte(payload))
|
|
}
|
|
|
|
func (rctx *Context) GetHeader(key string) string {
|
|
return rctx.Request.URL.Query().Get(key)
|
|
}
|